如何创建指定的帧并通过蓝牙发送?

时间:2014-06-06 08:27:55

标签: android packet android-bluetooth

我正在开发一个应该通过蓝牙从非Android设备发送和接收数据包的应用程序。我使用此处的示例源代码来管理连接和设备配对:

http://www.aimagin.com/learn/index.php/Interfacing_FiO_Board_and_Android_Phone_via_Bluetooth_%28Between_Andriod_and_FiO_-_Closed_Loop%29#Target_Model:Receiver_and_Sender

主机 - Android手机
设备 - 我的设备(更像是上面链接中的这个FiO板)

现在我想从此表创建并发送请求(步骤1):

http://postimg.org/image/4n8yf27qr/

我这样做:

byte[] sendingbytes = new byte[6+8]; //byte array for packet

ByteBuffer buff2 = ByteBuffer.wrap(sendingbytes).order(ByteOrder.LITTLE_ENDIAN); //wrapping byte array for modification


// Get ID, Get serial (request)
// ----------------------------------------- //
// 0xAA | 1000 0000 | 2 | 0x83; 0x84 | CRC   //
// ----------------------------------------- //
buff2.put((byte) 0xAA); //Header 0xAA
buff2.put((byte) 0x80); //flag 1000 0000

buff2.putInt((byte) 2);

buff2.put((byte) 0x83); //data 0x83
buff2.put((byte) 0x84); //data 0x84

buff2.put((byte) 0xFF); //CRC always FFFFh for testing
buff2.put((byte) 0xFF); //

if (mState == STATE_CONNECTED) mConnectedThread.write(sendingbytes);

我的设备应该像第2步那样使用数据包响应该请求。

我的问题是:

1。如何正确创建数据包,如步骤1,
2. 当设备将数据包发回给我时,如何解码数据包(步骤2)。

提前感谢!

1 个答案:

答案 0 :(得分:1)

我明白了。一个命令的正确数据包是:

buff2.put((byte) 0xAA); //Header 0xAA
buff2.put((byte) 0x80); //flag 1000 0000

buff2.put((byte) 0x01); //data length
buff2.put((byte) 0x00); //data length

buff2.put((byte) 0x83); //data 0x83

buff2.put((byte) 0xFF); //CRC always FFFFh for testing
buff2.put((byte) 0xFF); //