
VB上位机接收多个不同的数据并在不同Text框中显示
这个要如何实现,多个数据打包的话,从下位机要如何打包发送,然后上位机要怎么识别哪些数据是什么并正确在相应Text框中显示,希望能给个简单的代码例子,谢谢了...
这个要如何实现,多个数据打包的话,从下位机要如何打包发送,然后上位机要怎么识别哪些数据是什么并正确在相应Text框中显示,希望能给个简单的代码例子,谢谢了
展开
3个回答
展开全部
MSComm1.InputLen = 1
MSComm1.InBufferCount = 0 '清除发送缓冲区数据
MSComm1.OutBufferCount = 0 '清除接收缓冲区数据
MSComm1.InputMode = 1
MSComm1.SThreshold = 0
MSComm1.RThreshold = 10
SEL_COM
Dim btSend(10) As Byte
btSend(1) = &H1
btSend(2) = &H89
btSend(3) = &HFF
btSend(4) = &HA1
btSend(5) = &H5
btSend(6) = &H0
btSend(7) = &H0
btSend(8) = &H0
btSend(9) = &H30
btSend(10) = &H15
For I = 1 To 10
arr_rc(I) = btSend(I)
Next I
DoEvents
MSComm1.RTSEnable = True
yanshi
yanshi
yanshi
yanshi
yanshi
yanshi
yanshi
MSComm1.Output = arr_rc
du_shuju = True
yanshi
yanshi
yanshi
yanshi
yanshi
MSComm1.RTSEnable = False
Private Sub MSComm1_OnComm()
Dim I As Integer
MSComm1.InputLen = 0
If MSComm1.CommEvent = 2 Then
bytesTotal = MSComm1.InBufferCount
If bytesTotal = 29 Then
buf_rc = MSComm1.Input
For I = 0 To 28
arr_tx(I) = buf_rc(I)
Next I
Dim F1
F1 = arr_tx(8) & arr_tx(9)
If Val(F1) = "4821" Then Text25.Text = "通讯正常"
Command6_Click
Else
Text25.Text = "通讯超时"
End If
更多追问追答
追问
这上半部分是给下位机发送特定信号吗?下面的是检测通讯是否正常吗?那下位机发送的多个数据怎么处理啊
追答
你首先得知道,你需要的是下位机发送上来的那些数据,把你要的数据转换为你要的格式(10进制,或者浮点数)等等,转换方式有好多种。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照通讯协议把接收到的数据进行解析还原,然后分类显示即可。类似于编码译码,发送前按照协议打包,接收后按照协议解析。
追问
可以具体点吗?新手不太懂
追答
涉及到协议不是一句话能解释清楚的。举个例子吧:假如按照协议下位机要发送电压和电流两个数据,假如协议中规定数据中第5个和第6个字节表示电压,第7个和第8个字节表示电流(当然,一帧数据还包括起始字节校验字节等内容,具体看协议),假如电压为380,则第5字节为01,第6字节为7C(十六进制17C转换为十进制就是380),也可以直接B(5)=03、B(6)=80。上位机接收后经过校验这一帧数据正确,则取出相应字节,逆运算还原后显示就可以了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-25
展开全部
取决于 通信协议
多用 modbus 协议
多用 modbus 协议
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |