用于在不同的蓝牙LE中发送/接收UART rx特性的数据格式LE ANE
我使用distriqt的蓝牙ANE通过Adafruit的Bluefruit UART设备连接到arduino。用于在不同的蓝牙LE中发送/接收UART rx特性的数据格式LE ANE
我可以连接,找到UART服务,找到特性等
然而,当我将数据发送到设备的TX特点,我没有得到预期的回应 - 所有的更新给我零长度rx特征值的长度。
我有Bluefruit应用程序,当我通过那里的UART消息工具发送命令时,可以看到正确的响应。如果我发送一个无意义的命令,我只会得到一个零长度的响应。
这让我怀疑数据是否以正确的格式发送。在AS3代码这样做是:
var value:ByteArray = new ByteArray(); value.writeUTFBytes(msg);
sendUpdateMsg("trying to write to tx - value: " + msg);
var readSuccess:Boolean = _peripheral.readValueForCharacteristic(_rxChannel);
sendUpdateMsg("trying to read from rx before tx - outcome: " + readSuccess);
var success:Boolean = _peripheral.writeValueForCharacteristic(_txChannel, value);
sendUpdateMsg("trying to write to tx - outcome: " + success);
的sendUpdateMsg
功能只是将消息发送到日志屏幕上。当rx特征更新时,事件处理程序是:
private function peripheral_characteristic_updatedHandler(event:CharacteristicEvent):void {
sendUpdateMsg("peripheral characteristic updated: " + event.characteristic.uuid);
sendUpdateMsg("length="+ event.characteristic.value.length.toString() );
sendUpdateMsg("value="+ event.characteristic.value.readUTFBytes(event.characteristic.value.length) );
}
这总是输出零长度和没有值。
如果我送!“d”,例如,做我需要从不同的对待它:
var value:ByteArray = new ByteArray(); value.writeUTFBytes("!D");
,以便它通过UART服务被正确接收?
我没有立即访问arduino的东西 - 我可以要求开发人员为我添加一些调试 - 回显什么感觉是无稽之谈的消息 - 但这不会很快。
回答:
的问题是,我是失踪的消息的结尾LF字符字符(0x0A)。
这工作:
var value:ByteArray = new ByteArray(); value.writeUTFBytes(msg);
if(value[value.length-1] != 0x0A) {
value.writeByte(0x0A);
}
...并让我只添加的0x0A,如果它需要 - 取决于味精内容是否来自一个文本输入或编码字符串。
回答:
它可能是编码相关的问题,尽量不使用字符串,就是一个字节这一翻译
var ba:ByteArray = new ByteArray() //Instead of "!D"
ba.writeByte(33);
ba.writeByte(68);
以上是 用于在不同的蓝牙LE中发送/接收UART rx特性的数据格式LE ANE 的全部内容, 来源链接: utcz.com/qa/258051.html