Ports.Add("COM3")
With Ports("COM3")
.Close()
.Parity = Parity.None
.Handshake = Handshake.None
.StopBits = StopBits.One
.BaudRate = 9600
.DataBits = 8
.ReadBufferSize() = 4096
.WriteBufferSize() = 2048
.Open
End With
Dim b_sent() As Byte = {&H01, &H03, &H00, &H00, &H00, &H01, &H84, &H0A}
Ports("COM3").Write(b_sent, 0, b_sent.length)
Dim s As String
Dim s1 As String
Dim cnt As Integer = Ports("COM3").BytesToRead
If cnt > 0 Then '缓冲区是否有数据
Dim Val(cnt - 1) As Byte
Ports("COM3").Read(val,0,cnt)
Dim i As Integer
For i = 0 To cnt-1
s1 = Val(i)
If s1.Length = 1 Then
s = s & 0 & DecToHex(Val(i))
Else
s = s & DecToHex(Val(i))
End If
Next
End If
Output.Show(s)
以上代码,执行后不能读取COM缓存区,需要单独执行读取!
如果分开执行,就不能保证获取到的数据是那个查询条件的!
数据格式如下:
01 03 00 00 00 01 84 0A
设备编号 读取 其实扇区 扇区数量 校验码
返回值
01 03 02 01 03 F9 D5
设备编号 读取 数据长度 数据内容 校验码
希望寻找能够解决发送指令后直接读取的方法!