2011-11-07 80 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

它完美的作品!我可以将这个答案提升一千倍吗? –