使用vb中的mscomm控件进行读取和写入终端设备操作,一切都正常,可就不知道怎么判断终端设置故障(没有信号输出或者终端设备被拔出,我采用的是MSComm_OnComm进行读取操作),不知道mscomm中那个属性值能进行判断,还是用commEvent中的属性值进行判断?如果是应该是那个值?

解决方案 »

  1.   

       楼上说的我明白,可是我是利用mscomm中的Rthreshold属性赋值多少字符才执行串口事件的,就是读到多少字符的时候执行OnComm,这样应该怎么判断终端设备故障?假如终端设备没有故障一切正常,收发都正常,假如终端不正常了,就不可能执行OnComm事件了,因为读不到数据,不知道怎么判断????
      

  2.   

      我规定的握手协议就是一发一收了,发当然是计算机执行的(人为发送),接受我是规定接收到多少字符才执行ONCOmm事件了,就是我赋值给Rthreshold了,总不能是if   对象.Rthreshold=0  then   做我自己想做的事情吧,可是我是人为规定Rthreshold=10啊,那样是不可能执行Rthreshold=0嘛?
      

  3.   

    一般串口连续发送的每笔长度都是固定的, 例如你说的每笔10个字则 Rthreshold=10 如不固定长度你只能用Rthreshold=1 并以STX与ETX来判断了.不管长度固不固定,只要在几毫秒或几秒之内都没数据进来的话,马上就可断定联线失败了.
      

  4.   

    串口.Rthreshold=10的时候才执行ONCOmm,在oncomm中才能判断所要接收到的值多少,如果终端设备故障,那么就不会执行oncomm事件,接收到的值仍然是终端设备正常情况下的值,因为这个值很多地方要用到,所以我只能设置该值为全程变量值,在没有执行oncomm的时候他的值还是上次终端设备正常的值啊?所以无法判断终端设备正常否啊?
      

  5.   

      说白了就是如何判断终端设备的故障,在使用事件oncomm读取数据的时候?终端设备故障不执行oncomm事件,读到的值还是上次的值(该值设置了全程变量,因很多地方需要使用)
      

  6.   

    如果你的通讯过程是一发一收,就不可能不知道是否执行了 oncomm 事件。比如说,你设一个全局变量 blnUpdated As Boolean,在发送命令时将其设置为 False。在 OnComm 事件中将其赋值为 True。如果过了若干毫秒此变量还是 False,就可以认为是通讯故障。
      

  7.   

       关键是现在不执行oncomm事件了,因为他不接收不到数据啊(终端设备故障了),那么就无法实现了?好像没有接受到终端设备的数据的时候(当Rthreshold=10的情况下),是否就不可能执行oncomm事件呢?