以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  串口接收的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=77616)

--  作者:54292550
--  发布时间:2015/11/21 22:35:00
--  串口接收的问题
在串口接收数据中用了下面两个命令,正常来说串口数据都有换行符或者结束符号,如果遇到特殊情况,串口数据没有换行符或者结束符就会报错,怎么能忽略掉这些信息不让报错呢?

ReadLine 读取输入缓冲区的字符,直到遇到换行符, 返回的内容不会包括换行符。
如果读取过程没有遇到换行符,将引发超时错误。

示例

Dim s As String
s = Ports(
"COM2").ReadLine()

ReadTo 读取输入缓冲区的字符,直到遇到指定的结束符,返回的内容不会包括此结束符。
如果读取过程没有遇到指定的结束符,将引发超时错误。

语法:

ReadTo(Value)

Value:指定的结束符

示例:

Dim s As String
s = Ports(
"COM2").ReadTo("|")


--  作者:大红袍
--  发布时间:2015/11/22 14:28:00
--  

方法一:try catch

 

http://www.foxtable.com/help/topics/2070.htm

 

方法二:用read以后,自己判断是否有换行符。

 

Read 从输入缓冲区读取一些字节,并将这些字节写入字节数组中指定的偏移量处。

语法:

Read(buffer, offset, count)

buffer: 字节数组,从输入缓冲区中读取的字节将写入此数组。
offset: 开始写入的偏移量。
count:  要读取的字节数。

示例

Dim cnt As Integer = Ports("COM2").BytesToRead
If
cnt > 0 Then \'缓冲区是否有数据
    Dim
Val(cnt - 1) As Byte
   
Ports("COM2").Read(val,0,cnt)
End If