当前位置:  技术问答>linux和unix

串口程序能写不能读

    来源: 互联网  发布时间:2016-03-18

    本文导语:  直接先上代码: void ReadSThread::run()     {        int fdr,count,s;     struct timeval timeout;     fd_set rethread, wrthread;         fdr = orde->dev;         串口文件描述符     count = fdr + 1;          do  ...

直接先上代码:
void ReadSThread::run()    
{   
    int fdr,count,s;
    struct timeval timeout;
    fd_set rethread, wrthread;
   
    fdr = orde->dev;         串口文件描述符
    count = fdr + 1;  
  
    do
    {
     FD_ZERO(&wrthread);
     FD_SET(fdr,&wrthread);
     timeout.tv_sec = 0;
     timeout.tv_usec = 0;

     if(select(count, NULL, &wrthread, NULL, &timeout) > 0)
      write(fdr, orde->ctl, 9); 
     
     FD_ZERO(&rethread);
     FD_SET(fdr,&rethread);
     timeout.tv_sec = 0;
     timeout.tv_usec = 100;
     
     s = select(count, &rethread, NULL, NULL, &timeout);
      qDebug("lln");
     //select(count, &rethread, NULL, NULL, &timeout);
     //if(FD_ISSET(fdr, &rethread))
     //if(select(count, &rethread, NULL, NULL, &timeout) > 0)
      if(s > 0)
      { 
         qDebug("readn");
         memset(savebuf, 0, sizeof(savebuf));
         if(read(fdr, savebuf, sizeof(savebuf)) > 0)
         {
          printf("%sn",savebuf);
          QListViewItem* item = new QListViewItem( win1->ListView1, item );
          item->setText( 0, "1");
          item->setText( 1,savebuf);
         }
      }else 
          qDebug("%dn",s);
     msleep(orde->cyc);         
    }while(flag2);                这里flag2是为true的
}   

用于qt多线程编程读写串口....目的是先写串口发送命令出去,然后读串口的返回值....
在串口调试助手上收到了发送的命令..而且也设置了定时返回值给串口....
可总是读不到...其中的s值总为0,
qDebug("readn");这句也没有打印出来.....
郁闷了好久找不到原因....
望大虾们不吝赐教了....


|
时间太短,100us串口发不过来数的,

 timeout.tv_sec = 0;
     timeout.tv_usec = 100; 

改成
 timeout.tv_sec = 1;
     timeout.tv_usec = 0; 
看看

你可以计算一下,如果你把波特率设置成9600
那就是一秒钟最大可以发送1200个字节额,你平均833us传送一个字节,你设置超时时间100us,连一个字节都发不过来,你怎么接收啊。

    
 
 

您可能感兴趣的文章:

  • Redhat9为什么不能安装?是因为不能识别串口硬盘吗?
  • 新安装2.6.4,串口不能打开
  • 串口16进制不能实现读写?在线等待立刻给分
  • linux串口程序可以发送数据,但是不能接受数据?谁知道原因?
  • vmware 下的LINUX是不是不能控制机器的物理串口
  • Linux下写串口操作,对每次发送的数据要分多次写,不能一次写完,敬请高手赐教
  • 只有一台终端,不用多用户卡,能不能直接用并口或串口和unix主机联接?
  • linux 串口serial1和serial2不能用?
  • 在RH Linux 9.0下不能打开串口
  • 牛人进啊!串口非阻塞模式打开,但read不能立即返回!
  • 简单问题高分求救:在Redhat 9.0下怎么判断一个串口到底能不能用呀?
  • 串口不能发数据 收正常 达人帮忙看看程序
  • Linux下读串口操作,对每次发的数据要分多次读,不能一次读完,敬请高手赐教
  • 求救:我代码为什么不能从串口读出数据?
  • 一百分求lINUX串口通讯不能发出'1a'的问题
  • [求助]串口通信程序,能write不能read
  • 哪位大哥能不能帮我看看我的串口设置的函数!!!?
  • linux 串口通信,能够正确显示字符,但是不能正确显示数字
  • linux下,串口可写但是不能读,望高手指点
  • 急问!!!UART串口通信,可发送数据,不能接收数据
  • Linux 中用java语言写串口程序,提示找不到串口
  • unix 下c写的串口程序调试问题!高手请进 !!!
  • 开源串口通信程序 linucom
  • 请问,那位高手研究过linux下的串口驱动程序?
  • 关于C编写的串口程序的问题?
  • linux下观察串口的程序是哪个, 是终端吗.
  • 如何用c编写一串口通信程序呢?绝对给分!
  • awjx帮帮忙!~~~关于用QT做的有图形界面的串口通信程序
  • Linux 串口程序怎么清空缓冲区?
  • 用java可以串口通信方面的程序吗?
  • 怎么在LINUX下写串口程序?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • 散分100,求解串口键盘和串口鼠标驱动
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 关于linux串口通信中写串口的问题
  • 开发板串口与实际内核中的串口文件的对应关系怎么回事?谢谢帮忙
  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • 工控机有6个串口,但用光盘安装debian6.05,在dev中只找到4个串口,如何解决。
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • 要加多个串口,怎么分别指定他们的driver_name和dev_name以示区别各个串口?
  • 工控机上用光盘安装debian6.05,硬件上有6个串口,但是软件上即dev中只有4个串口,如何解决。
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • 扩展的串口卡上的串口操作的问题
  • 请教串口通信的编程
  • 请问如何以独占的方式打开串口
  • linux串口驱动该怎么写
  • 虚拟串口怎么读数据? 请有 串口 或者 usb 驱动经验的高手指点
  • linux下如何清空串口的输入输出缓存
  • linux下怎么监控串口?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    javascript开源软件 iis7站长之家