同样的一台下位机,同样的程序(采用CreateFile,ReadFile控制串口),在部分计算机上发送命令,接收数据都很正常,但是在某些计算机上却只能发送数据,计算机无法读到下位机的数据!最奇怪的是这时采用"串口调试助手"就能正常的收发数据!而且"串口调试助手"启动的时候可以收到下位机对我的程序发送的命令的响应数据!请教大家,如何解决这个问题.
   注:使用"串口调试助手"可以正常发送接收数据后,采用我的程序还是无法收到数据!

解决方案 »

  1.   

    串口硬件绝对没问题。
    可能是在串口设置上的问题。重点检查DCB和TimeOuts。多试试。
    还有,GetLastError(),分析具体原因。
      

  2.   

      >>>>>>>>而且"串口调试助手"启动的时候可以收到下位机对我的程序发送的命令的响应数据!
      你没有受到串口事件通知???? 是不是你的程序堵塞在其他地方的处理,而不是在WaitCommEvent中。
      

  3.   

    我也觉得不是硬件上出错了。应该是程序上的问题。最好看看Getlasterror返回的信息。
    同时再看看DCB的参数设置问题。同时也有可能在处理串口事件通知的时候,没弄好哦
      

  4.   

    串口调试助手用的是MsComm控件自己写程序的话,还要注意同一个程序在xp和2k下是截然不同的
    如果楼主用的异步方式,注意如果WaitCommEvent返回FALSE,还需要用GetLastError()判断是否为ERROR_IO_PENDING,如果是需要用while( !GetOverlappedResult(....) )来等待
    在接收到数据后需要及时检查数据帧是否正确,如果不是双方通信协议中的数据格式,要及时调用ClearCommError来清除错误剩下的就是在具体的系统环境下耐心调试了一个月前我也做了这么个项目,当时也够抓狂的,祝楼主好运!
    如果项目允许用MsComm控件的话,还是用控件吧