VB温度采集上位机请教!!
下位机程序正确,为什么采集过来的数据显示与下位机显示不一样,比如,数码管显示31.1,但是上位机却是31,都是去掉了小数部分。这是为什么??DimInbyte()AsBy...
下位机程序正确,为什么采集过来的数据显示与下位机显示不一样,比如,数码管显示31.1,但是上位机却是31,都是去掉了小数部分。这是为什么??
Dim Inbyte() As Byte
Dim buffer As String
If num > 199 Then Call renew
'读取仪表返回数据串
Select Case MSComm1.CommEvent
Case comEvReceive
Inbyte = MSComm1.Input
For i = LBound(Inbyte) To UBound(Inbyte)
buffer = buffer + Hex(Inbyte(i)) + Chr(32)
Next i
Case comEvSend
End Select
'获取十进制测量数据
If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2))
Else
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2))
End If
EndSub 展开
Dim Inbyte() As Byte
Dim buffer As String
If num > 199 Then Call renew
'读取仪表返回数据串
Select Case MSComm1.CommEvent
Case comEvReceive
Inbyte = MSComm1.Input
For i = LBound(Inbyte) To UBound(Inbyte)
buffer = buffer + Hex(Inbyte(i)) + Chr(32)
Next i
Case comEvSend
End Select
'获取十进制测量数据
If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2))
Else
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2))
End If
EndSub 展开
3个回答
展开全部
将你传输的数据格式化处理,format()函数,二进制形式能够上传小数位吗。要是可以的话就找到接收的数组,然后把数组数据处理一下
追问
谢了,我知道哪里出问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键是你传输数据的协议是什么?
比如按bcd码格式,按字符串格式,按二进制格式(接收后如何转换)。
建议你用字符串格式接收一下试试。
比如按bcd码格式,按字符串格式,按二进制格式(接收后如何转换)。
建议你用字符串格式接收一下试试。
更多追问追答
追问
MSComm1.InputMode = 1,以二进制形式接受,完了才是上面的转换方法,就不对了
追答
举例说明你发送的是什么,接收到的字节数组的所有数据是什么?
关键在于你的下位机在端口以什么方式发送的数据,还有它发送数据应该有协议。
不是你在这里瞎猜能解决的,你要看下位机串口发送数据的说明。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2))*0.1
Else
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2))*0.1
End If
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2))*0.1
Else
datatemp(num) = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2))*0.1
End If
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询