从Android应用程序通过蓝牙发送十六进制

时间:2014-04-04 09:16:02

标签: java android bluetooth

我正在尝试从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();
    }
  });    

0 个答案:

没有答案