用于在不同的蓝牙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

回到顶部