热情软件屋

 

运行程序时,不能够触发OnComm()事件


编号:QA004745
建立日期: 2003年11月7日 最后修改日期:2003年11月7日
所属类别:

何鑫:
    操作系统:windows xp
    编程工具:vb
    问题:在使用MSComm控件实现与串口仪器的数据传送和接收时,当端口打开后,主站向仪器中发送一个Modbus"包",其格式为:
     从属地址 11(十六进制,下同)
     功能码 04
     数据启动地址-hi 40
     数据启动地址-lo 50
     注册号-hi 00
     注册号-lo 03
     CRC-lo A7
     CRC-hi 4A
    我主要的传送代码为:
     Dim i As Integer
     Dim data_out(8) As Byte
     Dim buffer As Variant
    
     MSComm1.InBufferCount = 0
     MSComm1.OutBufferCount = 0
     data_out(0) = &H11
     data_out(1) = &H4
     data_out(2) = &H40
     data_out(3) = &H50
     data_out(4) = &H00
     data_out(5) = &H03
     data_out(6) = &HA7
     & nbsp;data_out(7) = &H4A
     Dim temp(8) As Byte
     For i = 0 To 7
     temp(i) = data_out(i)
     Next i
     MSComm1.Output = temp
    
    

    当运行程序时,不能够触发OnComm()事件,我设置断点跟踪了一下,感觉到是没有将数据传入仪器.在这里我只是测试能否与仪器进行交互,是使用的一个示例,所以有关CRC校验的东西还未考虑,但是任凭我怎么想办法,始终不能够触发事件,请问该如何解决,怎样才能够取得仪器中的数据?
    由于我是刚接触串口编程,所以很多的问题还不是很清楚,如果方便请给小弟较为详细的说明,万分感谢!

回答:

    李刚的意见:
    问题可能1
    在串口初始化中缺少语句 MSComm1.RThreshold=1
    问题可能2
    串口的握手协议(Handshaking属性)设置有问题.一些仪器可能需要使用RTS握手。
    
    刘殷君的意见:
    因为你没有设定为事件驱动模式。好象是在HANDSHAKING这个属性里面设置,你可以查一查帮助文件。我第一次使用这个控件是也出现相同问题,所以还有点印象,不过很久没用了,记得不太清楚。
    
    cubking的意见:
    不能够触发OnComm()事件时请检查MSComm控件的RThreshold属性和SThreshold属性
    将RThreshold属性设置为0(缺省)将在接收字符时不产生OnComm事件。例如,将RThreshold属性设置为1将导致MSComm控件在每个字符放入缓冲区时就触发OnComm事件。
    将SThreshold属性设置为0(缺省)将在发送字符时不产生OnComm事件。例如,将SThreshold属性设置为1将导致发送缓冲区完全变空。如果发送缓冲区中的字符比value值小,则将CommEvent属性设置为comEvSend,并产生OnComm事件。comEvSend事件只产生一次,在字符数低于SThreshold时。例如,如果SThreshold等于5,当字符数从5降低到4时产生一次comEvSend事件。如果输出队列中的字符数总不多于SThreshold属性值,则永不产生该事件。
    
    liugangnet的意见:
    关键的一句你为何没有,
    If Comm1.PortOpen=false Then Comm1.PortOpen=true
    ...
     Comm1.PortOpen = True '关键的一句哈,有它才发送数据呀(开通讯)
     Comm1.Output = "..."
    ...
    

此问题由李刚等回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 网络与通信, network, communicate, com, com1, com2

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio