我正在尝试从Android应用程序通过蓝牙spp发送数据。下面的代码采用字符串,完美地运行。无论我投入什么,我都会在连接的另一端进入超级终端。
public void write(String message) {
byte[] msgBuffer = message.getBytes();
try {
mmOutStream.write(msgBuffer);
} catch (IOException e) {
Log.d(TAG, "Error data send");
}
}
但是,我希望能够为' A'发送十六进制值,例如0x41。用ASCII。我将如何实现这一点,以便我可以转换一串#41; 41 7E"到值0x41和0x7E,然后按原样发送它们,这样在超级终端上它们就会出现为" A~"?我尝试过使用下面的例子,但没有成功。
public void writeHex(String str){
char[] buffer = str.toCharArray();
byte[] b = new byte[buffer.length];
for (int k=0; k < b.length; k++)
{
b[k] = (byte) buffer[k];
try{
mmOutStream.write(b);
}catch (IOException e){
Log.d(TAG, "Error data send");
}
}
}
当按钮发送&#39;时,将从和editText读入要发送的值。触发onClickListener。我已经格式化了editText,只有字符0-9和A-F有效。
hexSend.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String hex = hexInput.getText().toString();
mConnectedThread.writeHex(hex);
Toast.makeText(getBaseContext(), "Hex Data Sent", Toast.LENGTH_SHORT).show();
}
});