麻烦高手帮忙,两个串口时不卡,三个就很卡了,我用timer通过3个mscomm收发3个串口数据,但是有时程序会死机资源管理器显示也没有响应,而且用资源管理器也关不掉  有时不死机但是timer会变得很慢很慢,真的好烦哦,请高手帮忙

解决方案 »

  1.   

    谢谢二位:wellescai:我接收数据时通过3个串口on_comm事件接收的,而发送数据是在timer里面将三个数据顺序发送到三个串口的veron_04:我的下位机一共有三个,发送时是用timer每隔0.3秒将三个下位机的查询命令通过3个mscomm顺序发送出去,接收时是通过3个mscomm on_comm事件恩,接收的3个串口内容分别是255字节,21字节,0字节(这个端口只发送不接受)
    希望能有高手相助
      

  2.   

    增加Timer计时间隔或者增加波特率.
      

  3.   

    zdingyun:你觉得是什么问题呢,这个比较简单的办法我试过了
      

  4.   


    0.3S轮询256字节的COM口负担过重.在9600波特率下,理论能传递960字节.你1S约需处理800多字节
      

  5.   


    我觉得你最好增加一个timer来处理收到的数据,这样vb(应该是vb6吧)才好做到“异步”而不出现假死现象(因为vb不太支持多线程),如果你在oncomm事件里处理数据的话,再加上触发门限是一个字符的话,就有可能出现假死现象,特别是波特率低时,大概1~3字符触发一次事件,想想看,接收255字节,要运行啦多少遍oncomm事件处理程序呀,恐怖的时间消耗,如果你下位机响应格式是255字节的话,最好255字节一次处理,触发门限设置为255,如果格式任意长度字节的话,这样用一个timer来实现最少的处理次数!
      

  6.   

    carefire:我也在试着把那个rtherold设为255,但是还没有试一试,今天准备试一下
    Zdingyun:我的波特率是38400,还有个问题是两个com口在255字节和21字节的时候都没有问题,但是一旦加上另一个0字节的com口时就卡(这个com口只发不收)
      

  7.   

    寡人已经解决了,确实是单线程问题,一定要用active exe才行,希望后来者别走那么多弯路