程序员潇然 发表于 2022-11-11 16:49:06

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

### 问题背景

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

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

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

!(data/attachment/forum/202211/11/164841w4dqs9i0rg1zvu4w.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### 解决

```java
            PWMCtl.getInstance().switchWrite();

            byte[] sendData = modbusRequest.getMessageData();
            outputStream.write(sendData);
            outputStream.flush();
               
            TimeUnit.MILLISECONDS.sleep(2);

            PWMCtl.getInstance().switchRead();
```

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

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

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

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

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

!(data/attachment/forum/202206/16/141330jha7st9soow8772i.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "common_log.png")
`转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-215-1-1.html `
页: [1]
查看完整版本: 安卓核心板与485串口通信无法接收问题 收不到数据