VB做上位机软件来监测下位机的通讯数据
需要用vb做个上位机软件来监测下位机的通讯数据。目前下位机之间一轮完整通讯有400多个数据,为了不错过所有数据包,我一次收600个数,设RThreshold=600,In...
需要用vb做个上位机软件来监测下位机的通讯数据。目前下位机之间一轮完整通讯有400多个数据,为了不错过所有数据包,我一次收600个数,设
RThreshold = 600,InputLen = 600
把600个数都input下来,然后通过我需要的数据包包头三个字节和包的长度来在这600个数中寻找我需要的数据包,然后开几个buffer把我需要的数据包存起来,等定时器到时间显示出来。大概代码结构是这样
Private Sub Command1_Click
MSComm1.InputLen = 0
MSComm1.RThreshold = 600
MSComm1.InBufferCount = 0
MSComm1.InBufferSize = 2048
MSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
Timer1.Enabled = True
End Sub
Private Sub MSComm1_OnComm
Dim Data_Rec() As Byte
Dim Data_Trans(9) As Byte
Dim a As Short
Dim i As Byte
Select Case MSComm1.CommEvent
Case MSCommLib.OnCommConstants.comEvReceive
MSComm1.InputLen = 600
Data_Rec = MSComm1.Input '将缓冲区内的数据读入buf变量中
MSComm1.PortOpen = False
Slave_ID(0) = Data_Rec(0)
Slave_ID(1) = Data_Rec(1)
Slave_ID(2) = Data_Rec(2)
a = 3
Start_Search:
If Slave_ID(0) = 0 And Slave_ID(1) = 48 And Slave_ID(2) = 156 Then
.
.
.
现在我收600字节的数据一共要四五秒(下位机通讯之间有一些转接设备有延时), 如果下位机的从机数增加,到时候通讯数据量要增加很多,如果还按照我这种做法,先把所有数都收下来,然后再找我需要的几个包,这样更新一次数据花的时间就太长了。我想能不能边收边判断是不是我需要的边存,但就是想不到具体怎么做,如果设RThreshold =1,收到一个字节就就中断,实际上进入OnComm时候InputBuffer里已经有很多字节了,我感觉无论如何操作都很难满足要求
请教各位大神有没有什么好的方法 展开
RThreshold = 600,InputLen = 600
把600个数都input下来,然后通过我需要的数据包包头三个字节和包的长度来在这600个数中寻找我需要的数据包,然后开几个buffer把我需要的数据包存起来,等定时器到时间显示出来。大概代码结构是这样
Private Sub Command1_Click
MSComm1.InputLen = 0
MSComm1.RThreshold = 600
MSComm1.InBufferCount = 0
MSComm1.InBufferSize = 2048
MSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
Timer1.Enabled = True
End Sub
Private Sub MSComm1_OnComm
Dim Data_Rec() As Byte
Dim Data_Trans(9) As Byte
Dim a As Short
Dim i As Byte
Select Case MSComm1.CommEvent
Case MSCommLib.OnCommConstants.comEvReceive
MSComm1.InputLen = 600
Data_Rec = MSComm1.Input '将缓冲区内的数据读入buf变量中
MSComm1.PortOpen = False
Slave_ID(0) = Data_Rec(0)
Slave_ID(1) = Data_Rec(1)
Slave_ID(2) = Data_Rec(2)
a = 3
Start_Search:
If Slave_ID(0) = 0 And Slave_ID(1) = 48 And Slave_ID(2) = 156 Then
.
.
.
现在我收600字节的数据一共要四五秒(下位机通讯之间有一些转接设备有延时), 如果下位机的从机数增加,到时候通讯数据量要增加很多,如果还按照我这种做法,先把所有数都收下来,然后再找我需要的几个包,这样更新一次数据花的时间就太长了。我想能不能边收边判断是不是我需要的边存,但就是想不到具体怎么做,如果设RThreshold =1,收到一个字节就就中断,实际上进入OnComm时候InputBuffer里已经有很多字节了,我感觉无论如何操作都很难满足要求
请教各位大神有没有什么好的方法 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询