我正在使用 distriqt 的蓝牙 ANE 通过 Adafruit 的 Bluefruit UART 设备连接到 arduino。
我可以连接、查找 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 方面的东西——我可以要求开发人员为我添加一些调试——以回显无意义消息的感觉——但这不会很快。