2011-11-07 78 views
8

我想通過藍牙發送一個十六進制字符串中的Android/SPP 我想這:如何通過藍牙發送的十六進制值在Android的

OUT = sock.getOutputStream();

String myHexString = Integer.toHexString(80) + " " 
     + Integer.toHexString(2) + " " + Integer.toHexString(0) 
     + " " + Integer.toHexString(48); 

發送此字符串:

out.write(myHexString.getBytes()); 

,但沒有奏效...

任何幫助嗎?

+1

你將不得不放棄比這更多的上下文。什麼是襪子?它是藍牙連接嗎?髒襪子?你如何連接到藍牙設備?你連接到藍牙設備?請提供更多代碼。此外,「它沒有工作」沒有提供足夠的關於這個問題的信息。也可以發佈錯誤,或者更好地描述它是如何工作的。 – Jack

回答

10

問題,此解決:

private boolean connected = false; 
private BluetoothSocket sock; 
private InputStream in; 
private OutputStream out; 

zee = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
     "XX:XX:XX:XX:XX:XX"); 
    m = zee.getClass().getMethod("createRfcommSocket", 
     new Class[] { int.class }); 
    sock = (BluetoothSocket) m.invoke(zee, Integer.valueOf(1)); 
    sock.connect(); 
    in = sock.getInputStream(); 
    out = sock.getOutputStream(); 

char[] test = { 0x55, 0x0, 0x0, 0x0, 0x0, 0x50, 0x2, 0x0, 
     0x30, 0xD7 }; 

for(int k=0; k < test.lenght; k++){ 
new DataOutputStream(sock.getOutputStream()).writeByte(test[k]); 
} 
+0

看到此解決方案:您以前的解決方案無法工作。你在那裏做的是將這些值轉換成一個字符串併發送C-Like字符串。但是如果你想發送實際的值,這種方法是錯誤的(而不是發送值0x55,你應該發送序列「{0x30,0x78,0x35,0x35}」,它是'「0x55」') –

+1

是的,我沒有發送二進制文件。在我的串口終端中,我看到了不同之處。謝謝! – hnzjo

+0

它完美的作品!我可以將這個答案提升一千倍嗎? –

相關問題