VB采集监测系统求助
齐达内 2015-09-12 11:16:48 ]本人用vb制作的采通集设备电压电流监测系统,通信协议MODBUS-RTU。MSCOMM控件。现在已经成功做到用vb和一两个下位机采集模块通信,但模块共有六个(下位机编号1——6)。我目前的方法是在VB的BOTTON按钮中建立发送命令字符串,然后用TIMER定时器每隔一秒给下位机要数,接收到下位机信息后再显示出来。如果就这样做,在timer里面做 for t= 1to 6的一个循环发送,这样系统时间长了是否会崩溃?有没有更好的办法呢?这是定时器部分源代码,请大家帮忙给看看:
Private Sub Timer1_Timer()
If temp > 2 Then
temp = 1
End If
If temp = 1 Then
Text2.Text = "01 03 00 03 00 0C B5 CF" ‘向一号主机发送查询命令
ElseIf temp = 2 Then
Text2.Text = "02 03 00 03 00 0C B5 FC" ’向二号主机发送查询命令
End If
temp = temp + 1
Text17.Text = Now
If Check1.Value = 1 Then
Call Command6_Click
End If
End Sub
================================================================================
这是接收到下位机信息后我的处理代码
Private Sub MSComm1_OnComm()
Static cnt, count As Integer
Dim receive_cnt As Integer
Dim i As Integer
Dim a, b, c, d, e, x As Long
Dim Buffer As Variant
Dim Arr() As Byte
Dim s As String
Dim l(6)
Select Case MSComm1.CommEvent
Case comEvReceive
receive_cnt = MSComm1.InBufferCount
Buffer = MSComm1.Input
Arr = Buffer
s = ""
For i = 0 To receive_cnt - 1 Step 1
If Arr(i) > 15 Then
s = s + Hex(Arr(i)) + " "
Else
s = s + "0" + Hex(Arr(i)) + " "
End If
cnt = cnt + 1
Next i
If Arr(0) = 1 Then ‘接收字符串首位为1,则主机编号为1
Text3 = (Arr(3) * 256 + Arr(4)) / 300
Text4 = (Arr(5) * 256 + Arr(6)) / 300
Text5 = (Arr(7) * 256 + Arr(8)) / 300
Text6 = (Arr(9) * 256 + Arr(10)) / 300
Text7 = (Arr(11) * 256 + Arr(12)) / 300
Text8 = (Arr(13) * 256 + Arr(14)) / 300
Text9 = (Arr(15) * 256 + Arr(16)) / 1500
Text10 = (Arr(17) * 256 + Arr(18)) / 1500
Text11 = (Arr(19) * 256 + Arr(20)) / 1500
Text12 = (Arr(21) * 256 + Arr(22)) / 1500
Text13 = (Arr(23) * 256 + Arr(24)) / 1500
Text14 = (Arr(25) * 256 + Arr(26)) / 1500
If Arr(0) = 2 Then ’接收字符串首位为2,则主机编号为2
下面代码也是将信息写入text文本框中,我就不写了