如何将扩展ascii AT命令(CCh)从Android蓝牙发送到串行设备?

如何将扩展ascii AT命令(CCh)从Android蓝牙发送到串行设备?,android,bluetooth,serial-port,ascii,at-command,Android,Bluetooth,Serial Port,Ascii,At Command,这一次真让我头疼。我正在通过BluetoothChatService从Android应用程序向一个串行蓝牙适配器发送字母数字数据,该适配器连接到无线电收发器的串行输入 除了我尝试用AT命令在运行中配置收音机外,一切正常。AT++(输入命令模式)接收正常,但问题在于接下来两个命令中的扩展ascii字符:更改无线电目标地址(我正试图这么做)需要CCh 10h(加上3个十六进制无线电地址字节),退出命令模式需要CCh ATO 我知道收音机可以正常配置,因为我在早期的原型上使用PIC basic的串行命

这一次真让我头疼。我正在通过BluetoothChatService从Android应用程序向一个串行蓝牙适配器发送字母数字数据,该适配器连接到无线电收发器的串行输入

除了我尝试用AT命令在运行中配置收音机外,一切正常。AT++(输入命令模式)接收正常,但问题在于接下来两个命令中的扩展ascii字符:更改无线电目标地址(我正试图这么做)需要CCh 10h(加上3个十六进制无线电地址字节),退出命令模式需要CCh ATO

我知道收音机可以正常配置,因为我在早期的原型上使用PIC basic的串行命令进行了配置,而且它也可以通过直接从hyperterm输入命令进行配置。这两种方法都以某种方式将令人讨厌的CCh转化为无线电能够理解的形式

我已经尝试了Android noob可能想出的所有方法来欺骗编码,例如:

private void command_address() {
    byte[] addrArray = {(byte) 0xCC, 16, 36, 65, 21, 13};                   
    CharSequence addrvalues = EncodingUtils.getString(addrArray, "UTF-8");  
    sendMessage((String) addrvalues);
}
但无论如何,我似乎无法让高阶字节(CCh/204/-52)正常工作。所有其他(<127)字节,命令或数据,传输没有问题。这里的任何帮助都将不胜感激


-戴夫

嗯。。。原来BluetoothChat代码在发送到服务之前使用message.getBytes()重新创建字节数组。(毕竟,作为聊天代码,它通常只会生成常规的ascii字符串)正如本网站上的其他人所指出的,getBytes()在某些情况下可能会产生编码问题。因此,为了发送这些扩展的ascii命令,我不会弄乱字符串,只会使用

private void sendCommand(byte[] cmd) {
    mChatService.write(cmd);
}
所谓的命令数组首先用十六进制无线电地址元素的占位符初始化

byte[] addrArray = {(byte) 0xCC, 16, 0, 0, 0, 13};
然后在转换方法的帮助下填写

radioArray = HexStringToByteArray(radioAddr1);
可在此处找到: