以文本方式查看主题

-  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编辑过]