以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助,串口收到这样的数据能不能读取成一行,长度为8的数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=147208)

--  作者:风弩
--  发布时间:2020/3/11 21:45:00
--  求助,串口收到这样的数据能不能读取成一行,长度为8的数据

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20200311214341.png
图片点击可在新窗口打开查看

--  作者:风弩
--  发布时间:2020/3/11 22:11:00
--  
处理成这种格式的
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20200311221052.png
图片点击可在新窗口打开查看

--  作者:风弩
--  发布时间:2020/3/11 22:13:00
--  
需要怎么操作
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20200311221218.png
图片点击可在新窗口打开查看

--  作者:sloyy
--  发布时间:2020/3/11 22:32:00
--  
这个和串口没有任何关系,你既然已经接收到字符串了,只是个字符串转换问题 ,你现在不是已经转换了吗?  20=\'\',30-39 对应1-9 ,oD 对应 \\CR. 
--  作者:风弩
--  发布时间:2020/3/11 22:47:00
--  
那怎么能转化成为一行的数据,和下面图片那种格式一样的
--  作者:sloyy
--  发布时间:2020/3/11 23:02:00
--  
这个和通讯协议有关,你必须约定好哪里是开头,那里是结尾,那里是校验,这样才能8个字符断开组成一个正确的显示字符,否则任意8个字符都能组成一个显示字符了
看你现在的数据,应该是 前面2个20 20 是约定开头  OD 是结尾,中间是有效字符 不知有没有校验?  

--  作者:风弩
--  发布时间:2020/3/11 23:08:00
--  
这样的判断,在狐表里怎么写?谢谢
--  作者:有点蓝
--  发布时间:2020/3/12 11:37:00
--  
试试
Dim cnt As Integer = Ports("COM2").BytesToRead
If 
cnt > 0 Then \'缓冲区是否有数据
    Dim 
Val(cnt - 1) As Byte
    
Ports("COM2").Read(val,0,cnt)
dim str as string = System.Text.Encoding.Default.GetString(Val)
msgbox(str
End If