BGScript:将字符串转换为整数

BGScript: Conversion of string into integer

我有一个 android 应用程序可以将数据发送到 BLE113 模块。我通过类型为 'user' 的 GATT 特性接收数据。我能够以字符串形式获取数据。当我发送整数时,比如 24,我收到它作为字符串“24”。无论如何我可以将这个字符串数字转换为整数类型?

本文来自 gatt.xml.

<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration">
    <description>Config Register</description>
    <properties read="true" write="true"/>
    <value type="user" />
</characteristic>

这是 Android 端写入整数值“1”的代码段。

String str = "1";
    try {
      byte[] value = str.getBytes("UTF-8");
      chara.setValue(value);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
.
.
.
boolean status = mBluetoothGatt.writeCharacteristic(chara);

我想在 BGScript 端接收作为整数“1”本身的数据。我在转换方面做错了什么吗?请帮我发送整数。

跟GATT特性的类型'USER'有关系吗? 如果改成'hex'或'utf-8',问题就解决了吗?

在 gatt.xml 文件中,将值类型从 "user" 更改为 "hex" 并为其指定一些固定长度,如下所示:

<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration">
    <description>Config Register</description>
    <properties read="true" write="true"/>
    <value type="hex">00</value>
</characteristic>

在您的 Android 项目中,假设 chara 属于 BluetoothGattCharacteristic 类型,您可以使用类似以下的内容写入特性:

int newConfigRegValue = 1;
chara.setValue(newConfigRegValue, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
boolean status = mBluetoothGatt.writeCharacteristic(chara);

然后,在您的 BGScript 中(我假设,您没有另外说明),在 attributes_value() 事件中,您可以像这样保存该整数:

dim configRegister
...
event attributes_value(connection, reason, handle, offset, value_len, value_data)
...
    if handle = configuration then
        configRegister = value_data(0:value_len)    
    end if
...
end

-泰德

-开始编辑-

你也可以。

您的 gatt.xml 中的特征将如下所示:

<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration">
    <description>Config Register</description>
    <properties read="true" write="true"/>
    <value type="user">0</value>
</characteristic>

然后在您的 BGScript 文件中,您需要在读取请求到达时提供一个值。这是在 attributes_user_read_request() 事件中完成的。像这样:

event attributes_user_read_request(connection, handle, offset, maxsize)
    if handle = configuration then
        # Do something to retreive the configRegister value
        # If you need to read from external EEPROM or something, save the 'connection' value so you can use it in the callback event
        call attributes_user_read_response(connection, 0, 1, configRegister(0:1))
    end if
end