通过modbus连续发送命令出现的问题
时间:2011-09-15
来源:互联网
不好意思!我又有问题来了!
我是在timer事件中,写了轮询指令,通过Modbus协议实时读取智能仪表上的数值和表上的状态!
但是我现在需要通过手动发送命令,来控制只能仪表的动作,又出现发送命令冲突问题。
用什么方法,可以保证手动发送的命令和timer时间中的发送的命令不发生冲突呢!
我是在timer事件中,写了轮询指令,通过Modbus协议实时读取智能仪表上的数值和表上的状态!
但是我现在需要通过手动发送命令,来控制只能仪表的动作,又出现发送命令冲突问题。
用什么方法,可以保证手动发送的命令和timer时间中的发送的命令不发生冲突呢!
作者: yuhuihai326 发布时间: 2011-09-15
简单,你定义一个布尔变量,当手动需要设置时将其置为True
VB code
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个轮询指令的。
按照你的方式这么写对么??还是没有得到想要的结果!!!
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28