BGScript:将字符串转换为整数

时间:2016-06-02 06:40:43

标签: bluegiga

我有一个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”,问题是否会解决?

1 个答案:

答案 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