我目前正在为嵌入式 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时会得到类似“F+)i+i~”的结果。
这是我发现的:
“ F+)i+k~ ”对应“9920021101”
“ F+)i+i~ ”对应“9920021102”
“ F+)i+k~ ”对应“9920021103”
“ F+)i+m~ ”对应“9920021104”
(101 和 103 给出相同的结果)
现在我只需要我的 SerialPort 给我正确的 ID。现在被困在这一天了。如果有人能指出我做错了什么,我将非常感激。提前致谢。