安卓核心板与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]