我目前正在为嵌入式WinCE设备开发条形码阅读器应用程序,该设备在COM3串行端口中具有内置条形码扫描器。我编写了以下代码,以便每次扫描条形码时检测到(当COM3接收数据时)。
(VS2005:适用于SmartDevice的VB.NET:Windows CE 5.0)
Private Sub sp1_DataReceived(ByVal sender As System.Object, _
ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
Handles sp1.DataReceived
Q.Enqueue(sp1.ReadExisting)
End Sub
我使用计时器显示扫描的ID。
SyncLock Q
While Q.Count > 0
barcodeLbl.Text &= Q.Dequeue
End While
End SyncLock
每次扫描条形码时都会显示ID。这很好。但是,我没有在barcodeLbl.Text中获取正确的ID。相反,当我在上面的代码中使用 sp1.ReadChar 时,我使用 sp1.ReadExisting 和几个ASCII数字时得到了类似:“F +)i + i~”。
这是我发现的:
“ F +)i + k~ ”对应于“9920021101”
“ F +)i + i~ ”对应于“9920021102”
“ F +)i + k~ ”对应于“9920021103”
“ F +)i + m~ ”对应于“9920021104”
(101和103给出相同的结果)
现在我只需要我的SerialPort给我正确的ID。现在已经被困在这一天了。如果有人能够确定我做错了什么,我将非常感激。提前谢谢。