PC端使用MSComm控件操作数据,PLC端使用RS指令发送一数据串,字符串以26(十进制)结束;按照MSDN说明,当MSComm收到该字符时,MSComm控件应该产生OmComm事件(CommEvent 参数为comEvEOF(7 收到文件结束(ASCII 字符为 26)字符。)但实际上,字符串已经能正确接收,数据完整,最后字符确为26,但是OmComm事件并没发生,这是为什么,或者我哪错了,请知道的高手不吝赐教。

解决方案 »

  1.   

    你应该是没有设置 MSComm1.RThreshold,这个属性设置为0,就表示不触发OnComm事件,设置为1,就表示接收到一个字符触发一次,依次类推。
    看看这个:
    http://download.csdn.net/detail/veron_04/4037248
      

  2.   

    RThreshold设置为1,每个字符触发一次,应该不是个好的选择,这样效率太低,同时,也失去RThreshold这个参数存在的意义,但是如果设置大于1的值,比如,设置为10,现在有26个字节的数据传入,那么,传入20个字符后,再传入最后的5个就不会触发事件,PC端该如何处理最后的消息?
      

  3.   

    未设置MsComm控件的EOFEnable 属性为True,而且要设置RThreshold 属性不等于0.
      

  4.   

    楼主你好!我想通过三菱PLC的RS指令与VB通讯,可否给我些资料呢?
      

  5.   

    三菱的没有用过,不太懂它的rs是怎么使用的,要看他的说明书。、
    一般VB和PLC通信要了解PLC的通信协议,按照通信协议组织数据,并解释返回的数据,一般情况下,不不要使用rs指令(rs指令一般作为主机使用,PC和PLC通信,一般将PLC做从机使用)