如果串口缓冲区为空,则read函数会立即返回0,表示没有数据可读。 如果串口缓冲区中没有数据可读,并且没有设置超时机制,则read函数会阻塞,直到有数据可读为止。 如果串口缓冲区中没有数据可读,并且设置了超时机制,则read函数会阻塞,直到有数据可读或超时时间到达为止。 为了使read函数变为阻塞模式,可以使用fcntl函数设置...
首先用linux下的minicom去看下串口到底有没有数据发出来,如果有的话,那就是程序接收问题了.minicom配置要配正确."请问单独一个串口不可以做shell控制终端,又做应用程序的串口数据通信吗?"什么意思?是既可以做shell终端,也可以做串口数据通信?当然可以的啊,只要通过串口发送命令或者数据都是可以的.
51CTO博客已为您找到关于linux 串口read报错返回-1的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及linux 串口read报错返回-1问答内容。更多linux 串口read报错返回-1相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
这时倘若将c_cc[VMIN]或者c_cc[VTIME]中任意一个项修改成>0,那么read就返回-1了。 虽然表现形式一样,但在编程时必须要了解自己使用的是哪一种模式和串口当前的状态才能更好的分析和处理问题。 这里说一下我曾经遇到过的一个问题: 我在打开串口时使用阻塞模式打开,但是没有设置c_cc[VMIN]的值,而它初始化...
函数返回值:成功返回0,失败返回-1。 4. 打开串口 在前面已经提到linux下的串口访问是以设备文件形式进行的,所以打开串口也即是打开文件的操作。函数原型可以如下所示: int open(“DE_name”,int open_Status) 参数说明: (1).DE_name:要打开的设备文件名 ...
参考下APUE的程序清单14-11的readn()函数,此函数看似很好,但是它不适合用于串口的读取,因为它一旦if(nread = read(fd, ptr, nleft) < 0) 就立刻会跳出循环,没有丝毫的时间上的容限,而串口的接收必然没有这么快,如若波特率为1200,是比较慢的。俩个字节传输的间隔,其都会被判断为错误而跳出。当然该函数...
我正在尝试使用系统调用从串口读取一些数据,并且运行良好。问题是,read()是,即使当代码是running.Please帮助时,也不返回负的值,即使我拔掉了串行电缆。编辑:当我拔掉电缆时,它会返回一个零。char cBuff[100];while (( nbytes = read(fd, buffptr, cBuff + sizeof(cBuff) - buffptr- 1)) > 0) &#x ...
函数返回值:成功返回0,失败返回-1。 4. 打开串口 在前面已经提到linux下的串口访问是以设备文件形式进行的,所以打开串口也即是打开文件的操作。函数原型可以如下所示: int open(“DE_name”,int open_Status) 参数说明: (1).DE_name:要打开的设备文件名 ...
函数返回值:成功返回0,失败返回-1。 4. 打开串口 在前面已经提到linux下的串口访问是以设备文件形式进行的,所以打开串口也即是打开文件的操作。函数原型可以如下所示: int open(“DE_name”,int open_Status) 参数说明: (1).DE_name:要打开的设备文件名 ...