Linux中串口read怎样阻塞的方式读入数据
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);
附加:那位大牛要是能告诉个大概的 Linux C 中哪些IO操作函数时阻塞 哪些不是
或能使用什么方法实现阻塞或不阻塞
...全文
相关推荐
QT QSerialPort 封装,阻塞方式发送数据后等待读取缓冲区数据结果,使用QT信号量阻塞,线程中初始化串口和读取数据。
QT QSerialPort 封装,阻塞方式发送数据后等待读取缓冲区数据结果,使用QT信号量阻塞,线程中初始化串口和读取数据。
Linux C语言实现串口收发数据
基于Linux使用C语言实现的一个串口通讯Demo,实测可用。
串口通信非阻塞
串口通信非阻塞方式,发送数据,接收数据并保存到文件(当间隔n毫秒没有再收到数据表示一次接收完毕,将数据保存到文件)
Linux pty虚拟串口write阻塞
这两天遇到一个问题,程序中的串口运行时间长了就读不到数据了,最后发现是因为我虚拟的串口在写数据的时候发生了阻塞从而导致读串口的线程一直阻塞在写虚拟串口的操作处。我列出我程序的片段: void vir_serial_init(char *filename){ vir_serial_fd = -1; sfd = -1; int ret = -1; char spty_name[100]; memset(spty_name, '\0', 100); ret = openpty(&vir_serial_fd, &sfd, spty_name, NULL, NU
Linux下的Socket编程实例(阻塞和非阻塞)
Linux下基于C/C++的Socket的阻塞和异步编程实例



