有关串口通信问题的求助。。
vb吧
全部回复
仅看楼主
level 7
snipegod 楼主
本人在写一段通过串口采集PT100温度的代码时,遇到了一些问题:
我使用的是一个成品的PT100温度采样模块,根据它的设计,在其接受到输出温度的请求后,会输出一组十六进制数据:01 03 02 00 A3 F8 3D(如下图),而这串字符中的00 A3,就是其测得的温度数据,将其转换为十进制再除以10即为当前温度,例如上述00 A3,则此时测得的温度就是16.3度,这是前提。。
我通过串口调试助手软件可以读取正常的数值,但是试图通过VB代码实现时,却遇到了一些问题,以下将这代码贴上来:
Dim z() As Byte
Dim y
Dim S As String
z = MSComm1.Input
For y = 0 To UBound(z)
S = S & Hex(z(y))
Next
xx = Val("&H" & Mid(S, 7, 3))
Text1.Text = xx
通过以上代码,我首先试图获取当前串口输出的十六进制数组,再取其从左到右第7位数字开始往后的4个数字,再将其转换为十进制,最终输出在文本框中,但是事实上输出的数据却非常乱,毫无规律可言,求大神赐教到底是什么原因。。
2022年02月19日 14点02分 1
level 15
没必要这么麻烦,不用转换成字符串再转换回数值,直接取原数组相应位置的数字做个计算就行了:
Text1.Text = (z(3) * 256 + z(4)) / 10
至于你遇到的问题,原因就是Hex函数转换成的十六进制字符串并不能保证有两位数,比如01转换出来的就是1,前面的0没了,位数不对自然就乱套了
2022年02月19日 14点02分 2
好思路!感谢大佬!
2022年02月20日 12点02分
1