android 串口通信读取数据,处理问题?求大神帮忙

下面这段代码是我接收串口数据的
private class ReadThread extends Thread {

@Override

public void run() {

super.run();

        while (!isInterrupted()) {  
            int size;  
            try {  
                byte[] buffer = new byte[30];  
                if (mInputStream == null)  
                    return;  

                 mInputStream.read(buffer);  
                 //根据数据协议规则,判断每条数据的长度
                size=Integer.parseInt(Integer.toHexString(buffer[2]))+3;
                if (size > 3) {  
                    onDataReceived(buffer, size);  //调用更新UI方法
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
                return;  
            }  
        } 
    }  
}  

下来的截图是我处理UI的。
void onDataReceived(final byte[] buffer, final int size) {
// TODO Auto-generated method stub

    MainActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            String reString="";
            if (mReception!=null) {
                for (int i = 0; i <size; i++) {
                    String hexString=Integer.toHexString(buffer[i]&0xFF);
                    if (hexString.length()==1) {
                        hexString='0'+hexString;
                    }
                    reString+=hexString.toUpperCase();
                }

                mReception.append(reString+"\r\n");
                Toast.makeText(getApplicationContext(), "接收成功"+reString,
                         Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
                MainActivity.this.finish();
            }
        }
    });


}

我现在的问题是,当我跳转页面,并关闭当前页面之后,我在新的页面在接收一条数据时,这条数据会让原页面给拦截接收,并再次把跳转页面执行了一遍(就是把新页面打开了两次),之后在发数据,它就可以正常在跳转之后的页面接收了。 为什么啊? 是我那么有加判断,还是我写的代码,跟线程不符
其中要根据接收的消息来更新ui,或跳转页面

1个回答

{求大神帮忙!!!!!!}
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

哎…… 算了结贴了!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

android 是怎么与串口通信的?

现在我有一个 usb转串口的线,一台mac,一个android开发板。在网上搜索后,将代码拷贝到自己的工程中(就是serialport的一些代码), 然后现在可以往串口里面写数据了,但是读取不到数据? 因为现在我还不清楚,android到底是怎么与串口通信的?网上的例子是可以发送数据了,但是它读取的是哪里的数据呢(虽然我现在还读取不到数据),还有我要怎么才能与mac进行连接呢,让mac发送数据,android开发板来接收数据呢? 网上基本上都是千篇一律的内容,你抄我的,他抄你的,完全不知道写的什么。都是那几段代码,几个类,而且是不能成功运行的。 有没有大神指导下,android串口通信到底是怎么回事?

Android开发板接收串口数据偶尔遗失。求解

串口接收消息时大多数是接收的完整数据,极少时数据会丢失![图片说明](https://img-ask.csdn.net/upload/201903/02/1551492185_613663.png) 这个是正常的数据接收, ![图片说明](https://img-ask.csdn.net/upload/201903/02/1551492276_283715.png) 这个数据丢失了。 我将串口连接电脑,在电脑上是完整数据,但是我Android板子上面就数据缺失了。 请大神告知一个求解方法 。 联系方式QQ: 2310704429

android 串口通讯 为什么收不到返回的数据 大神们快来帮帮忙 真的很急啊

安卓板开发的快递柜的软件 windows上用串口助手调试可以收到开锁反馈,可是放到安卓这死活收不到反馈数据啊 这得怎么办 ![图片说明](https://img-ask.csdn.net/upload/201704/17/1492414547_210772.png)

安卓读取串口数据时read阻塞,程序不能向下进行

用安卓 通过串口读取单片机发来的数据时,用inputstream.read()去读取数据时会发生阻塞,程序就卡在read()函数不能往下运行了,我是用的网上来源的serial_port_api,,,本人新手做项目卡在这了,求大神指导一下!!感谢

Android系统的手持设备支持串口,有没有Listener能判断串口线有没有连接啊

Android系统的手持设备支持串口,有没有Listener能判断串口线有没有连接啊,就是跟USB监听一样,插上了有提示,线断开了也有提示,求大神指教

安卓手机通过usb线接收发过来的数据

我要做的功能是,点片机通过USB线向手机发送数据,手机端这边怎么接收,求大神指点

串口通信,如何解决拔插串口的问题

1,打开软件,连接好了串口 2,测试数据,有数据 3,拔掉串口 再插上串口(相当于丢失了串口) 4,不关闭软件,测试数据,没有数据 请问各位大神,怎么不关闭软件加载串口。在软件里面判断串口如果丢失了串口自动加载呢?

手机app获取蓝牙设备(内置核心模块--JY61)传输过来的数据

手机利用蓝牙搜索配对上蓝牙设备,连接上后蓝牙设备给手机传输数据,此蓝牙设备不是BLE设备,并且通信过程中利用BluetoothSocket进行通信,但是获取不到数据,有可能设备传输的数据加密了还是必须知道数据格式??求大神给点思路,卡这一块2周了,希望能够交流下

android项目中JNI调用的C代码

最近的一个项目,需要通过JNI在串口中读取数据,读取数据并返回的代码是用C语言写的。我对C语言很陌生,哪位大神帮帮忙,帮忙撸几句代码。 JNIEXPORT jbyteArray JNICALL Java_com_cem_serialdevdemo_CodeJNI_ReadRfidSerialPort (JNIEnv *env, jobject obj) { //大致的思路是: int rev=0; unsigned char sof; unsigned char buf[20]; rev=read(s_fdRfid,&sof,1) //判断读取到数据时: //判断读取到的数据与通信协议的格式是否相同 //首先判断前三个字节与通信协议的前三个识别码是否相同 //再判断末尾两个字节与通信协议的后两个识别码是否相同 //再取出中间的四个字节,转换为jbyteArray后返回 //未读到数据或者数据格式不对时:返回"0" char *fail="0"; jbyteArray byteArray = (*env)->NewByteArray(env, 1/*strlen(cp)*/); (*env)->SetByteArrayRegion(env, byteArray, 0, 1/*strlen(cp)*/, (jbyte *)fail); return byteArray;![图片说明](https://img-ask.csdn.net/upload/201604/05/1459826369_242788.png) }

电子秤RS232连接电脑,隔一段时间不能读数据

公司有一台电子秤,通过USB转串口,RS232协议连接电脑,每隔一段时间,串口调试工具都读不到正确的数据,但是把数据线拔掉在重新插上,再打开串口就又可以读出数据了,请问有大神知道是怎么回事吗?

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

C++语言基础视频教程

C++语言基础视频教程

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

Python数据分析与挖掘

Python数据分析与挖掘

微信小程序开发实战之番茄时钟开发

微信小程序开发实战之番茄时钟开发

软件测试2小时入门

软件测试2小时入门

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐