私は現在、COM3 シリアル ポートにバーコード スキャナーが組み込まれている組み込み WinCE デバイス用のバーコード リーダー アプリケーションを開発しています。バーコードがスキャンされるたびに (COM3 がデータを受信したときに) 検出するように、次のコードを作成しました。
(VS2005: VB.NET for SmartDevice: 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.ReadExistingを使用すると"F+)i+i~" が表示され、 sp1.ReadCharを使用するといくつかの ASCII 番号が表示されます。
これが私が見つけたものです:
" F+)i+k~ " は "9920021101" に対応
" F+)i+i~ " は "9920021102" に対応します
" F+)i+k~ " は "9920021103" に対応
「F+)i+m~」は「9920021104」に対応
(101 と 103 は同じ結果になります)
これで、正しい ID を取得するために SerialPort が必要になりました。これで1日立ち往生しています。誰かが私が間違っている場所を特定できれば、本当に感謝しています。前もって感謝します。