Linux中串口read怎样阻塞的方式读入数据

Linux中串口read怎样阻塞的方式读入数据,第1张

Linux中串口read怎样阻塞的方式读入数据C/C++ code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

pthread_mutex_lock(&ptty->mt)

ret = read(ptty->fd, pbuf, 1) //由于read并不阻塞 要监听随时可能来数据的串口 得不停的循环的查看 效率好低

if(ret <0)

{

//串口没有数据进来

}

else

{

//相关处理

}

/*

怎样加以控制使得,或使用什么函数

readfunction(ptty->fd, pbuf, ......)//使得这儿没有串口数据时阻塞,有串口数据了就读到

//避免不停的循环+sleep() 耗费ARM板资源,而且有时还漏读

//有的说用什么fcntl,ioctl 这两不太懂,希望可以解释清楚点

*/

pthread_mutex_unlock(&ptty->mt)

串口同步读写数据,ReadFile会一直阻塞,但是用串口调试助手可以接受到数据。不过之后再启动程序就正常了,很郁闷,不知道问题出现在哪里,下面把代码贴出来:以同步方式打开串口:bool CSerialIO::openSerialPort(char* szSerial){HANDLE hSeri...

首先你确定你那串口是否有东西可读? 就是你上面说的“一个文件不停的写数据到串口”!你可以先不这样读取,你可以在终端上用cat试试是否有数据可读:cat /dev/ttyS0

如果有的话,那你就检查串口设置是否正确,如波特率,数据位,停止位,校验位等!

最后就是你读取的函数了,看看先不要用printf打印字符串了,先看看十六进制是否有,然后再看字符等!

就是以上一些,你还可以参考Linux下串口文档,百度上很多的……


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7537637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存