+ -
当前位置:首页 → 问答吧 → 通过modbus连续发送命令出现的问题

通过modbus连续发送命令出现的问题

时间:2011-09-15

来源:互联网

不好意思!我又有问题来了!


我是在timer事件中,写了轮询指令,通过Modbus协议实时读取智能仪表上的数值和表上的状态!


但是我现在需要通过手动发送命令,来控制只能仪表的动作,又出现发送命令冲突问题。


用什么方法,可以保证手动发送的命令和timer时间中的发送的命令不发生冲突呢!

作者: yuhuihai326   发布时间: 2011-09-15

简单,你定义一个布尔变量,当手动需要设置时将其置为True
VB code

Option Explicit
Dim bolManual As Boolean
Dim intComm As Integer

Private Sub Command1_Click()
    bolManual = True    '标记手动操作
End Sub

Private Sub Form_Load()
    Timer1.Interval = 100   '之所以把这个值设置为100,是为了让手动操作得到及时响应
    
End Sub

Private Sub Timer1_Timer()
    If intComm = 0 Then
        '轮询通信
        
    End If
    intComm = (intComm + 1) Mod 5   '控制轮询执行时间间隔,Timer执行5次,读一次,也就是大约间隔500ms
    If bolManual Then
        '手动操作
        bolManual = False
    End If
End Sub


作者: Veron_04   发布时间: 2011-09-15

Private Sub TimerRead_Timer()
Static Sum As Long
  Sum = Sum + 1
 If Sum = 1 Then
With vModbusBSbill
  .ReadBalPanAndState
End With '写轮询指令1


 ElseIf Sum = 2 Then
  Sum = 0
With vModbusBSbill
.ReadBalValue
End With [color=#99CC00][/color]'写轮询指令2



If Test Then

vModbusBSbill.AggControl (4)

Test = False
End If

End If




我是要发送2个轮询指令的。

按照你的方式这么写对么??还是没有得到想要的结果!!!

作者: yuhuihai326   发布时间: 2011-09-15

热门下载

更多