前辈们好,小弟刚开始学习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……。总之显示出来的数毫无规律,乱七八糟。
小弟不解,为什么会产生这种情况。是我的蓝牙接收方法不正确,还是模块或手机的问题?
蓝牙模块买的是市面上用的比较多的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……。总之显示出来的数毫无规律,乱七八糟。
小弟不解,为什么会产生这种情况。是我的蓝牙接收方法不正确,还是模块或手机的问题?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货