急急急!linux串口总是read返回0

急急急!linux串口总是read返回0,第1张

首先用linux下的minicom去看下串口到底有没有数据发出来,如果有的话,那就是程序接收问题了.minicom配置要配正确."请问单独一个串口不可以做shell控制终端,又做应用程序的串口数据通信吗?"什么意思?是既可以做shell终端,也可以做串口数据通信?当然可以的啊,只要通过串口发送命令或者数据都是可以的.

返回-1的时候,要根据错误码来判断原因,请看下面的函数说明:

表头文件 #include<unistd.h>

定义函数 ssize_t read(int fd,void * buf ,size_t count)

函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。

附加说明 如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。

错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EBADF 参数fd 非有效的文件描述词,或该文件已关闭。

1、可以事先检查一下传递给 read() 函数的 fd 是否合法,即在 'if ((nread = read(fd,myBuff2,strlen(myBuff2)))>0)' 之前判断 if ( fd == NULL ) printf("出错啦!\n")

2、read()函数是文件 *** 作函数,在c语言中很重要。

函数的返回值如下:

(1)如果成功,返回读取的字节数;

(2)如果出错,返回-1并设置errno;

(3)如果在调read函数之前已是文件末尾,则返回0


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

原文地址:https://54852.com/yw/8402729.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存