0

我有一个将数据发送到 BLE113 模块的 android 应用程序。我通过类型为“用户”的 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 特征的“用户”类型有什么关系吗?如果我将其更改为 'hex' 或 'utf-8',问题会解决吗?

4

1 回答 1

0

在 gatt.xml 文件中,将值类型从“用户”更改为“十六进制”,并给它一些固定长度,如下所示:

<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是 type 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
于 2016-07-01T19:45:31.993 回答