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

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-23
linux下串口收发的问题,下面一段代码,select()返回的始终是0,程序处于阻塞状态,无法读到数据

我遇到的返回0的情况是通过改大timeout的值调试过的,你试试吧

1. 确认是否成功打开的串口设备?
2. 确认打开串口后, 是否设置了波特率等一系列的参数?
3. 确认是否可成功写入?
4. 尝试使用poll 来代替select. 对于系统设备, 有时select不能正常工作而poll是可以的。

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

  • 各位大侠,我写了一个linux下我写了个程序验证串口接收数据情况,是个...
    答:1:你自己写一个读串口的函数,里面调用read;例如:int tipc_read_socket( int sockfd, char *buf, int len ){ int count = 0; //每次读取字节数 int pos = 0; //总共读取字节数 pos = 0;do { count = read(sockfd, &buf[pos], len - pos);//printf("tipc_read_socket:count[...
  • 急急急!linux串口总是read返回0
    答:首先用linux下的minicom去看下串口到底有没有数据发出来,如果有的话,那就是程序接收问题了.minicom配置要配正确."请问单独一个串口不可以做shell控制终端,又做应用程序的串口数据通信吗?"什么意思?是既可以做shell终端,也可以做串口数据通信?当然可以的啊,只要通过串口发送命令或者数据都是可以的.
  • linux串口读取问题
    答:首先你确定你那串口是否有东西可读? 就是你上面说的“一个文件不停的写数据到串口”!你可以先不这样读取,你可以在终端上用cat试试是否有数据可读:cat /dev/ttyS0 如果有的话,那你就检查串口设置是否正确,如波特率,数据位,停止位,校验位等!最后就是你读取的函数了,看看先不要用printf打印...
  • linux读取串口数据linux读取串口
    答:1、查看串口是否可用,可以对串口发送数据比如对com1口,echolyjie126>/dev/ttyS0 2、查看串口名称使用ls-l/dev/ttyS*一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;3、查看串口驱动:cat/proc/tty/d...
  • linux串口RS485循环读数,如何退出
    答:两种方案:一、在读循环中检测键盘输入;二、将循环读设入一个线程,将检测键盘设入另一个线程。
  • linux 串口读写问题 三星的ARM9 mini2440开发板
    答:读取数据时{使用函数:read(fd,buff,512);}接着使用printf(“%s”,buff,)打印,如果没有收到数据,打印函数不执行。如果给串口发送一个带回车换行的数据,就能显示,并且ARM回向串口发送数据就是上面提到的情况。 我认为是缓存没有清空,但是在应用程序中我又不知道怎么去清除。希望大家能帮忙看看怎么设置,谢谢啦,我QQ...
  • Linux中串口read怎样阻塞的方式读入数据
    答:Linux中串口read怎样阻塞的方式读入数据C/C++ code pthread_mutex_lock(&ptty->mt); ret = read(ptty->fd, pbuf, 1); //由于read并不阻塞 要监听随时可能来数据的串口 得不停的循环的查看 效率好低 if(ret < 0) { //串口没有数据进来 } else { //相关处理...
  • linux读写串口数据分两次接收linux读写串口
    答:最好有代码,这样分析抓不准,可能原因:缓冲区问题,不过串口缓冲应该支持不了几千次字符串问题,类似申请了内存没释放,或者产生了越界或者乱码之类的读取正常,说明串口本身没问题,除了程序本身,那么还可能是接收端处理的问题 linux串口读取数据被截断,怎样一次全部接收?没办法保证能够一次全部接收,只能...
  • Linux中串口read怎样阻塞的方式读入数据解决办法
    答:印象中串口读取默认就是阻塞的,串口有一堆flag可以设置啊,你百度一下linux阻塞串口,csdn里有很多。read()本身返回值就是read到的字符长度,用这个人为做阻塞也可以
  • 在线等,请教关于Linux串口读取GPS数据的问题!
    答:的时候设置的是非阻塞方式。导致串口上没数据的时候read也立即返回,但是你的while已经把有效的数据读走了,if里面读到的一定是空的,所以什么也不打印。建议 1. 在打开串口设备时使用阻塞方式,不会设置的话查查open系统调用的帮助,它有个flag;2. 把while循环内的if语句去掉。