2014-06-06 47 views
2

我正在開發一個應用程序,它應該通過藍牙從非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手機
設備 - 我的設備(更像是從上面的鏈接這一局氧合指數更低)

現在我想創建和發送從該表請求(步驟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包,
2.如何解碼數據包(第2步)當設備發回給我。

在此先感謝!

回答

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); //