[Android] 安卓核心板与485串口通信无法接收问题 收不到数据

问题记录 问题记录 8725 人阅读 | 0 人回复

问题背景

移远那种4G模块,设备有安卓核心板和底板,通过转换芯片、串口完成与外接设备的通讯。

但是发现485串口通信存在问题,外接设备无响应,也可能是未成功发送数据。

设备端软件是需要手动对收发进行切换的,实现方式是读写一个指定文件,设置0 1 进行读写的控制。

image.png

解决

            PWMCtl.getInstance().switchWrite();

            byte[] sendData = modbusRequest.getMessageData();
            outputStream.write(sendData);
            outputStream.flush();

            TimeUnit.MILLISECONDS.sleep(2);

            PWMCtl.getInstance().switchRead();

核心代码如上,切换后对串口的流进行

代码逻辑没有问题,关键点在于TimeUnit.MILLISECONDS.sleep(2);这一行

因为切换,或者可能是外接设备响应的问题,比如如果延时过长,数据已经返回但是无法准确接收等。

如果不设置延时,将会大概率无法准确地把数据发送出去。

经过测试2毫秒延时刚好。

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-215-1-1.html

    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
海康摄像头接入 wvp-GB28181-pro平台测试验
[md]### 简介 开箱即用的28181协议视频平台 `https://github.c
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。