我现在用MSCOMM 串口通信,电脑通信连接多块温度板卡,当温度板卡的数量比较多的时候,发觉用MSCOMM做通信,经常会导致电脑死机10秒针左右(鼠标可以移动,但是点击没有反应,同时键盘也失灵),然后又会恢复正常,请问高手这个问题的原因和解决方案。

解决方案 »

  1.   

    是一个MSCOMM控制多个串口,还是怎么做的啊?还是每个串口配置一个MSCOMM啊
      

  2.   

    初看是因为你可能用了轮询等待结果,当其中一个或者几个设备没有返回信息,那么程序始终在waitfortimeout,应该是程序逻辑上有问题
      

  3.   

    谢谢各位高人指点!
    我设计是每个串口配置一个MSCOMM的。我是大概每2秒针一个周期对6个温度模块进行循环检测,接收信号方式我利用过OnComm来触发接收,也用过延迟等待200ms再去读取MSComm2.Input,但是两种方式都会出现:电脑死机10秒针左右(鼠标可以移动,但是点击没有反应,同时键盘也失灵),然后又会恢复正常的现象。
      

  4.   

    正像高人IDWB所说的轮询等待结果,这个问题应该怎样在逻辑上去避免发生这样的错误呢?  迷茫中!
      

  5.   

    如果你是用多个串口,而每个串口连接一个控制板那么不必采用轮询方法,每个串口可以独立工作,如果一个串口连接多个控制板,而每个控制板都有一个不同的设备地址,那么你可以使用轮询方法。如果让程序不死可以让所有操作在线程中完成,也就是不要在主程序中sleep或者其他等待函数
    如果你的控制板是主动发送信息给PC,那么你可以用spcomm试试看,每个串口独立接收数据处理。
      

  6.   

    不要在主程序中sleep或者其他等待函数 
    如果你的控制板是主动发送信息给PC,那么你可以用spcomm试试看,每个串口独立接收数据处理。楼上正解。要用多线程,
      

  7.   

    楼主看看出现问题时CPU的利用率是多少,如果此时CPU的利用率很高(比如100%)那表明你的代码有问题或通信存在干扰。
    楼主最好先用串口调试器调试一下通信。