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里已经有很多字节了,我感觉无论如何操作都很难满足要求
请教各位大神有没有什么好的方法
展开
 我来答
匿名用户
2011-09-02
展开全部
这主要还是个通讯协议的事,你可以这样来定义:
数据长度+机号+功能+数据+CRC校验
这样,可以采用定长度来发送数据。
另外,可以采用问答式来进行数据通讯。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
575yrms477
2011-08-27 · TA获得超过249个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:341万
展开全部
VB完全能胜任编写上位机监控软件,关键是你需要有上下位机的通信协议,按协议编写利用MSCOMM控件的代码.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式