有3个设备Modbus查询命令,
A:(01 03 00 00 00 02 44 0C),
B:(01 03 00 09 00 03 94 0B),
C:(01 01 00 00 00 02 3D CC)
分别收到
AA:(01 03 04 00 01 00 02 2A 32
),
BB:(01 03 06 00 01 00 02 00 03 FD 74
),
CC:(01 01 02 01 01 79 AC
)
实现功能,
ABC间隔100ms持续轮流发送,并且显示在TEXT1-2-3,中,
AA,BB,CC为接收到的字符串,其中粗体斜体部分为不定值,但每次接收长度为确定值,验证每次数据接收完整后,分别显示在TEXT4-5-6中,
就是发送A接收AA,完整后发送B接收BB,完整后发送C接收CC,完整后发送A,如此循环。
如果某一个不完整则重新发送这个
vb6怎么实现,可以发邮箱121059821@qq.com
仅供参考:
Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command2_Click()
MSComm1.Output = "FF001160000C4"
Sleep 300
End Sub
Private Sub Command4_Click()
On Error Resume Next
If Shape1.FillColor = &H4000& Then '如果没有启动,按下此按键,代表用户想启动
MSComm1.CommPort = Combo1.ListIndex + 1
MSComm1.Settings = "38400,n,8,1" '设置波特率
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024 '设置缓冲区接收字节数
MSComm1.OutBufferSize = 1024 '设置缓冲区发送字节数
MSComm1.RThreshold = 1 '设置接收1个字节就产生OnComm事件
MSComm1.InBufferCount = 0 '清空输入缓冲区
MSComm1.OutBufferCount = 0 '清空输出缓冲区
MSComm1.SThreshold = 0
MSComm1.RTSEnable = True '接收数据使能
MSComm1.InputMode = comInputModeText '以字符串方式发送与接收
MSComm1.InputLen = 0
MSComm1.Handshaking = comNone '无握手协议
MSComm1.PortOpen = True
If Err Then
'MSComm1.PortOpen = False
MsgBox "通讯端口选择错误!" + vbCrLf + "正确的串口号在这里看:" + vbCrLf + "桌面->我的电脑->属性->硬件->设备管理器->端口->COM"
Else
Shape1.FillColor = &HFF00& '把启动指示灯打开
Command4.Caption = "关闭"
Combo1.Enabled = False
End If
Else '如果启动了,按下此按键,代表用户想关闭
MSComm1.PortOpen = False '关闭串口
Shape1.FillColor = &H4000& '关闭启动指示灯
Command4.Caption = "开启"
Combo1.Enabled = True
End If
End Sub
Sub InitRs232() '初始化串口副程序
On Error Resume Next
MSComm1.CommPort = Combo1.ListIndex + 1 '设置com端口
If MSComm1.PortOpen Then MSComm1.PortOpen = False '如果串口为打开状态则关闭它
With MSComm1 '宣告MsComm控件的结构体
.Settings = "38400,n,8,1" '设定通讯协议38400波特率,无奇偶校验,8位数据,一个停止位
.InBufferSize = 1024 '设置缓冲区接收数据为1024字节
.OutBufferSize = 1024
.RThreshold = 1 '设置接收1个字节就产生OnComm事件
.InBufferCount = 0 '清空缓冲区
.OutBufferCount = 0
.SThreshold = 0
.RTSEnable = True
.InputMode = comInputModeText
.InputLen = 0
End With
Text1 = ""
End Sub
Private Sub MSComm1_OnComm()
Dim bytInput() As Byte
Dim intInputLen As Integer
Dim teststring As String
Dim b As String
Dim HexA As String
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputMode = 0 '0:文本方式,1:二进制方式
intInputLen = MSComm1.InBufferCount
bytInput = MSComm1.Input
teststring = bytInput
Text1.Text = teststring
teststring = ""
b = Mid(teststring, 9, 4)
HexA = b
Text1.Text = Val("&H" & HexA)
End Select
End Sub