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
展开
 我来答
yiyueyangxinyu
2012-06-21 · 超过32用户采纳过TA的回答
知道答主
回答量:183
采纳率:0%
帮助的人:97.9万
展开全部
将你传输的数据格式化处理,format()函数,二进制形式能够上传小数位吗。要是可以的话就找到接收的数组,然后把数组数据处理一下
追问
谢了,我知道哪里出问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2012-06-20 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3269万
展开全部
关键是你传输数据的协议是什么?
比如按bcd码格式,按字符串格式,按二进制格式(接收后如何转换)。

建议你用字符串格式接收一下试试。
更多追问追答
追问
MSComm1.InputMode = 1,以二进制形式接受,完了才是上面的转换方法,就不对了
追答
举例说明你发送的是什么,接收到的字节数组的所有数据是什么?

关键在于你的下位机在端口以什么方式发送的数据,还有它发送数据应该有协议。
不是你在这里瞎猜能解决的,你要看下位机串口发送数据的说明。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刚巧吻额cy
2012-07-09
知道答主
回答量:13
采纳率:0%
帮助的人:4.4万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式