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
我有一个 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