0

現在、現在のバーコード システムを更新して、スキャン時にログ ファイルを保存するという小さなプロジェクトに直面しています。ただし、現在のシステムのソース コードは提供されていません。そこで、実行する小さな .exe を開発できるのではないかと考えていました。その仕事は、スキャンした ID と現在のタイムスタンプを log.txt という名前のテキスト ファイルに保存することだけです。

これが私が提供するすべてです:

  1. 組み込みのバーコード スキャナー (イメージャー) と、USB ポートを含む他のいくつかのポートを備えた、Windows CE で実行される小さなタッチスクリーン デバイス。
  2. オブジェクト コード (exe、dll、pdb、bat、および xml) とその他のマルチメディア ファイルを含むメモリ スティック。
  3. VS2005 SP1 のインストールが必要な SDK プラットフォーム インストーラー (.msi) を含む SDK CD。

今、私は仕事を成し遂げる方法について混乱しています。私はこれについて研究するために過去3日間を費やしてきました。私の Google の調査結果の 1 つは、バーコード スキャナーがキーボード入力と同じように機能することを示唆していますか? そこで、10 桁の ID が入力されると同時にテキストボックスの内容を保存し、テキストボックスをリセットするテキストボックスを備えた簡単な VB6 アプリケーションを作成しました。ただし、アプリケーションはデバイスで実行できません (悲しいことに、VB6 exe は winCE で実行できないことがわかりました)。

さらに、デバイスで MS ワードパッドを開き、バーコードをスキャンしようとしました。ただし、ワードパッドには何もコピーされません。バーコードスキャナーはキーボード入力と同じように機能すると思いましたか? 私の間違い?明確化は高く評価されます。

私は実際にはバーコードと winCE の開発に不慣れで、それが役立つ場合は、C#、VB6、VB.Net、C、Java の言語に精通しています (順番に)。仕事を終わらせるための最速の方法について何か提案はありますか? 忙しい仕事ではないと思いますが、どこから始めればいいのか行き詰まっています。

さらに説明が必要な場合に備えて教えてください。前もって感謝します!

編集#1:

これまでに試したことは次のとおりです(バーコードスキャンがキーボード入力と同じように機能すると仮定):(VS2005でWindows CE 5.0デバイスにVB.Netを使用)

Private Sub barcodeTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles barcodeTB.TextChanged
    If (Len(barcodeTB.Text) = 10) Then     'If 10 digits ID have been scanned..
        Using writer As IO.StreamWriter = New IO.StreamWriter("log.txt", True)
            writer.WriteLine(barcodeTB.Text & " " & DateTime.Now)
        End Using
        barcodeTB.Text = ""    'reset TextBox
    End If
End Sub

コードを手動で入力すると問題なく動作します。しかし、バーコードをスキャンしようとしたときはゼロでした。

編集#2: WebサイトでいくつかのPDFが提供されています:http://www.scantech-id.com/en/support/download.php?pin=42676d021abeff1e479180ffeb4240e5

スキャナーが COM3 ポートにインストールされていることは間違いありません。まだこれを理解しようとしています。

編集#3: これが私の最後の試みです:COM3ポートからDataReceivedを介して直接読み取ること。

送信データがある場合は1秒ごとに送信するようにタイマーを設定しました。バーコードをスキャンしたときにのみテキストボックスが更新されるため、うまく機能します。ただし、出力は望ましい形式ではありません。私は何を間違っていますか?下記参照: スクリーンショット

コードは次のとおりです。

Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _
    ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
    Handles SerialPort1.DataReceived
    Q.Enqueue(SerialPort1.ReadExisting())
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    SyncLock Q
        While Q.Count > 0
            receivedTB.Text &= Chr(13) & Chr(10) & Q.Dequeue
        End While
    End SyncLock
End Sub
4

0 に答える 0