关于蓝牙接收数据的解决方案
2014-04-13 16:27
218 查看
一开始的时候蓝牙应用只接受单片机串口发来的一个温度数据,所以也没啥问题,存在的一个现象第一个数据丢失的问题被我在单片机程序中加一个空格键解决了。后来应用需要同时接受好几个个传感器数据,问题就来了。以下是本人在调试中的各种方案以及出现的现象,水平较低,不喜勿喷。
第一个解决方案:
第二种解决方案:
在lanya.java中进行判断
这种方法看似理论上可行,但是在实际运行中多次出现程序崩溃的现象,而且有事接收不到数据,故果断舍弃。
第三种方案:
在线程中进行判断
这样就不会出现程序崩溃的现象,注意上面的判断,如果超出或小于某一值的时候手机界面中不予显示,这样可有效防止乱码现象。
第一个解决方案:
if(i==0) { String readMessage1 = new String(readBuf, 0, msg.arg1); mInputEditText1.setText(readMessage1); i=1; } else if(i==1) { String readMessage2 = new String(readBuf, 0, msg.arg1); mInputEditText2.setText(readMessage2); i=2; } else if(i==2) { String readMessage3 = new String(readBuf, 0, msg.arg1); mInputEditText3.setText(readMessage3); i=0; }出现现象是数据可以接受但是不同同时显示三个数据,而且总是在跳变,给人以眼花缭乱的感觉,用户体验特比差,而且后期的语音也没法在此基础上做,故果断舍弃。
第二种解决方案:
在lanya.java中进行判断
Float f = Float.parseFloat(readMessage); if(f>3.0) { mInputEditText1.setText(String.valueOf(f)); } else if((f>1.5)&&(f<3)) { mInputEditText2.setText(String.valueOf(f)); } else if(f<2.0) { mInputEditText3.setText(String.valueOf(f)); }
这种方法看似理论上可行,但是在实际运行中多次出现程序崩溃的现象,而且有事接收不到数据,故果断舍弃。
第三种方案:
在线程中进行判断
while (true) { try { // 读取输入流 if( (bytes = mmInStream.read(buffer)) > 0 ) { byte[] buf_data = new byte[bytes]; for(int i=0; i<bytes; i++) { buf_data[i] = buffer[i]; } String s = new String(buf_data); Float f = Float.parseFloat(s); if((f>3.0)&&(f<5.0)) { mHandler.obtainMessage(LanYa.MESSAGE_READ1, bytes, -1, buffer) .sendToTarget(); } else if((f>1.0)&&(f<3.0)) { mHandler.obtainMessage(LanYa.MESSAGE_READ2, bytes, -1, buffer) .sendToTarget(); } else if(f<0.2) { mHandler.obtainMessage(LanYa.MESSAGE_READ3, bytes, -1, buffer) .sendToTarget(); }} 在LanYa.java中 case MESSAGE_READ1: byte[] readBuf1 = (byte[]) msg.obj; String readMessage1 = new String(readBuf1, 0, msg.arg1); mInputEditText1.setText(readMessage1);
这样就不会出现程序崩溃的现象,注意上面的判断,如果超出或小于某一值的时候手机界面中不予显示,这样可有效防止乱码现象。
相关文章推荐
- 第五(六)周作业 p1
- Wireless
- Android开发时提示Your project contains error(s),please fix them be
- android蓝牙开发
- drupal7里将分类属语表(taxonomy/term)生成菜单
- java积累
- hdu1010 DFS和剪枝
- eclipse安装pydev不成功
- Leetcode_n-queens
- WM_CTLCOLOR消息
- Linux 下安装mysql
- 头指针,头结点,首元结点的区别,头结点的优点
- nyist 27 水池数目(dfs搜索)
- (传送门)Logistic regression (逻辑回归) 概述
- ArcGIS 10.1相关软件下载
- 操作系统---进程
- 【JAVA大数训练】N!
- 杭电2059龟兔赛跑
- C# Resources参数不支持重复项-Form拷贝出现的错误
- 第二章 栈和队列(1)——顺序存储