以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 串口接收数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=140902)
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 12:49:00
-- 串口接收数据问题
此主题相关图片如下:qq截图20190917124303.png
如上图, 用十进制 接收数据
想取"+"开始的数据,但怎么也判断不到“+” 是为什么啊。
Dim s As String=Ports("COM3").ReadExisting Dim head As Integer = s.IndexOf("+")
If head>=0 Then ...
end if
这里head 返回总是-1
---------------
我复制了一组数据
+00000001B +00000001B +00000001B+0 0000001B+00000 001B+00000001B +00000001B +00000001B +00000001B +00000001B +00000001B +00000001B+0 十六进制为
00 02 2B 30 30 30 30 36 30 30 31 44 03 厂家给的说明是
此主题相关图片如下:qq截图20190917125013.png
[此贴子已经被作者于2019/9/17 12:51:54编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/9/17 13:44:00
--
Dim s As String=Ports("COM3").ReadExisting msgbox(s) ‘显示什么内容?
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 13:55:00
--
--------------------------- 地磅.Form --------------------------- +00000001B+00000001B+00000001B --------------------------- 确定 ---------------------------
循环
此主题相关图片如下:qq截图20190917135216.png
\'Dim cnt As Integer =Ports("COM3").BytesToRead \'If cnt > 0 Then \'缓冲区是否有数据 \'Dim Val(cnt - 1) As Byte \'MessageBox.Show( Ports("COM3").Read(val,0,cnt)) \'End If
上述显示 好像没啥规律 12 ,36 等值
[此贴子已经被作者于2019/9/17 13:57:21编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/9/17 14:12:00
--
Dim s As String=Ports("COM3").ReadExisting msgbox(Asc(s(0))) msgbox(Asc(s(10))) msgbox(Asc(s(11)))
上面分别显示什么?
Dim s As String=Ports("COM3").ReadExisting s = s.replace(chr(2),"").s.replace(chr(3),"|") msgbox(s) dim sr() as string = s.split("|") msgbox(sr.length)
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 14:21:00
--
Dim s As String=Ports("COM3").ReadExisting
msgbox(Asc(s(0)))
msgbox(Asc(s(10)))
msgbox(Asc(s(11)))
2
66
3
Dim s As String=Ports("COM3").ReadExisting
s = s.replace(chr(2),"").s.replace(chr(3),"|")
msgbox(s)
dim sr() as string = s.split("|")
msgbox(sr.length)
有报错
--------------------------- 错误 --------------------------- 编译错误:“s”不是“String”的成员。
错误代码:s = s.replace(chr(2),"").s.replace(chr(3),"|") --------------------------- 确定 --------------------------- 是不是应该s.replace(chr(2),"") & s.replace(chr(3),"|")
[此贴子已经被作者于2019/9/17 14:22:50编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/9/17 14:52:00
--
s = s.replace(chr(2),"").replace(chr(3),"|")
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 15:07:00
--
--------------------------- 地磅.Form --------------------------- +00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B|+00000001B| --------------------------- 确定 --------------------------- 长度 16
想读取第一个+ 后截取后7位 但总是找不到+
[此贴子已经被作者于2019/9/17 15:24:58编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/9/17 15:27:00
--
dim sr() as string = s.split("|") msgbox(sr.length) for each s1 as string in sr msgbox(s1) next
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 15:33:00
--
地磅.Form --------------------------- 9.N7+00000001B|+00000001B|+00000001B|+00000001B|+00000001B| --------------------------- 确定 ---------------------------
--------------------------- 地磅.Form --------------------------- 9.N7+00000001B --------------------------- 确定 --------------------------- --------------------------- 地磅.Form --------------------------- +00000001B --------------------------- 确定 ---------------------------
有个空的
是循环显示 通常显示的是 +00000001B
|
-- 作者:aidimeng
-- 发布时间:2019/9/17 15:43:00
--
需要把每一帧都这样处理吗? 直接找+ 第一次出现的位置去截取怎么找不到啊
Dim s As String=Ports("COM3").ReadExisting MessageBox.Show(s) MessageBox.Show(s.IndexOf(chr(43)))
试了下 采用这样的办法可以找到 +
[此贴子已经被作者于2019/9/17 15:51:15编辑过]
|