前辈们好,小弟刚开始学习Android,接手的项目是用我们开发板上的蓝牙模块与手机进行数据传输。
蓝牙模块买的是市面上用的比较多的HC-05,手机是HTC。用蓝牙模块与电脑进行通信测试,数据无失真传输。
用模块与手机通信,Android的程序我参考Google提供的范例 BluetoothChat,对其部分作修改。关键代码如下: private final Handler mHandler = new Handler() { @Override
         public void handleMessage(Message msg) {
switch (msg.what) {
            case MESSAGE_STATE_CHANGE:
              
               break; 
            case MESSAGE_READ:
             byte[] readBuf = (byte[]) msg.obj;                 
              for(int i=0;i<readBuf.length;i++){
              drawBuffer[i] = readBuf[i];
                   System.out.println(drawBuffer[i]);
               }
               
                      break;
            case MESSAGE_DEVICE_NAME:
                     
                break;
            case MESSAGE_TOAST:
                Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST),
                               Toast.LENGTH_SHORT).show();
                break;
            }
}
 
 };
我发射的数据为每秒500个字符(char),发出的数据比如0,1,2……249,249,248……2,1,0,这应该是一个三角形的图形,但是我红色代码的输出结果却不是这个数组,会发生变化(不是正负号的情况)。有时会缺一段,有时会某段发数据发生变化,比如0,1……167,230,231,232……。总之显示出来的数毫无规律,乱七八糟。
小弟不解,为什么会产生这种情况。是我的蓝牙接收方法不正确,还是模块或手机的问题?

解决方案 »

  1.   

    我用PC机上的蓝牙与HTC手机进行了通信,手机可以无失真的接收到数据。这是不是说明,我的Android程序是没问题的,问题出在买的HC-05上了?
      

  2.   

    哎,怎么就没人回答我一下呢??我看网上很多人都用HC-05成功和Android手机通信啦,,是我的手机党问题?要是换蓝牙模块,不知道换什么好啊
      

  3.   

    波特率改成921600试试? 我看手机蓝牙底层初始化串口用的这个速  hciattach -s 921600 /dev/ttyS1 bcsp 921600 在init_uart()里面这个速率用上了。