我有一个Android应用程序,它将数据发送到BLE113模块。我通过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”,问题是否会解决?
答案 0 :(得分:0)
在gatt.xml文件中,将值类型从“user”更改为“hex”并给它一些固定长度,如下所示:
chara
在您的Android项目中,假设BluetoothGattCharacteristic
的类型为int newConfigRegValue = 1;
chara.setValue(newConfigRegValue, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
boolean status = mBluetoothGatt.writeCharacteristic(chara);
,您可以使用以下内容写入特征:
attributes_value()
然后,在你的BGScript中(我假设,你没有另外说明),在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
事件中,你可以保存那个整数,如:
<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration">
<description>Config Register</description>
<properties read="true" write="true"/>
<value type="user">0</value>
</characteristic>
-Ted
- 开始编辑 -
你也可以这样做。
gatt.xml中的特性如下所示:
attributes_user_read_request()
然后在您的BGScript文件中,您需要在读取请求进入时提供值。这是在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
事件中完成的。像这样:
SELECT firstname, lastname, age, country
FROM mytable
ORDER BY id