网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月06日漏签0天
vb吧 关注:156,096贴子:1,166,214
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回vb吧
>0< 加载中...

有关串口通信问题的求助。。

  • 只看楼主
  • 收藏

  • 回复
  • snipegod
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本人在写一段通过串口采集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个数字,再将其转换为十进制,最终输出在文本框中,但是事实上输出的数据却非常乱,毫无规律可言,求大神赐教到底是什么原因。。


  • 初音七奈
  • 钩子编程
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没必要这么麻烦,不用转换成字符串再转换回数值,直接取原数组相应位置的数字做个计算就行了:
Text1.Text = (z(3) * 256 + z(4)) / 10
至于你遇到的问题,原因就是Hex函数转换成的十六进制字符串并不能保证有两位数,比如01转换出来的就是1,前面的0没了,位数不对自然就乱套了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示