安いバーコードリーダーをお探しですか?
もしかしたらこのAndroidアプリが役に立つかも・・・




バーコードリーダー入門


バーコードリーダーを使ってみよう

トップへ戻る

第2回 キーボード入力で受取るプログラム

* まずは、バーコードリーダーの準備を行います。今回使用するのは、たまたま手元にあった、「NL2001U」です。驚くほど薄くて軽い、最新型のレーザータイプのバーコードリーダーです。


バーコードリーダーの接続
 「NL2001U」はUSBインターフェイスで、パソコンに接続するとHID(ヒューマンインターフェイスデバイス)として自動認識され、即座に利用可能な状態となります。この点でも、USB-HIDインターフェイスのバーコードリーダーは簡単です。その他の機種では、同じUSBインターフェイスでも、COMポート制御となるUSB-COM(仮想COM)インターフェイスを持つものもありますので、ご購入の際に確認してください。
*

バーコードリーダーの設定
 今回作成する読み取りを受取るプログラムでは、入力完了の信号であるターミネータとして、改行コードであるCR(0x0d)を受取ります。「NL2001U」ではデフォルトでターミネータがCRになっていますが、念のため、取扱説明書に記載された設定用バーコードをいくつか読み込んで、ターミネーターをCRに設定しておきます。

1:1照合プログラムを作成する
 今回作成したのは、最初に読み取ったバーコードと次に読み取ったバーコードが同じであれば「OK」、異なれば「NG」 を表示するだけの簡単なプログラムです。 開発言語として、「Microsoft Visual Basic 2005」を使用します。まずは、画面を次のように配置しました。
*
上から、Label1(Label)、TextBox1(TextBox)、Label2(Label)と3つのコントロールを配置しただけです。
次に、コード部分を書いていきます。

Public Class Form1

    Dim mdlintStep As Integer = 1   '入力ステップ - 1:照合元入力中、2:照合先入力中
    Dim mdlstrBase As String        '照合元バーコード

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        '--- 表示を初期化
        TextBox1.Text = ""
        Label1.Text = ""
        Label2.Text = ""
        Label2.ForeColor = Color.White

        '--- ※この後、Form1_Activatedが処理される

    End Sub

    Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated

        '--- Windowがフォーカスを得たら、次の入力をうながすメッセージを表示
        If mdlintStep = 1 Then
            Label1.Text = "照合元を読み取ってください。"
            Label1.BackColor = Color.LightGreen
        Else
            Label1.Text = "照合先を読み取ってください。"
            Label1.BackColor = Color.Aqua
        End If

    End Sub

    Private Sub Form1_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Deactivate

        '--- Windowがフォーカスを失ったら、処理継続不可能を示すメッセージを表示
        Label1.Text = "処理できません。カーソルを置いて下さい。"
        Label1.BackColor = Color.LightPink
        TextBox1.Text = ""

    End Sub

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

        '--- CR(0x0d)を検知したら、読取されたとみなす
        If e.KeyCode = Keys.Enter Then

            '--- 入力値がある場合だけ処理を継続。
            If TextBox1.Text <> "" Then

                If mdlintStep = 1 Then
                    '--- 照合元の入力値を確定し、照合先入力へ。
                    mdlstrBase = TextBox1.Text
                    Label2.Text = "照合元:" & mdlstrBase
                    Label2.BackColor = Color.Black
                    mdlintStep = 2
                Else
                    '--- 照合先の入力値を確定し、照合元の値と照合。
                    Label2.Text = Label2.Text & vbCrLf & "照合先:" & TextBox1.Text
                    If mdlstrBase = TextBox1.Text Then
                        '--- 同じ値であれば、照合OKとし、次の照合元入力へ。
                        Label2.Text = Label2.Text & vbCrLf & vbCrLf & "照合OK"
                        Label2.BackColor = Color.Green
                    Else
                        '--- 異なる値であれば、照合NGとし、次の照合元入力へ。
                        Label2.Text = Label2.Text & vbCrLf & vbCrLf & "照合NG"
                        Label2.BackColor = Color.Red
                    End If
                    mdlintStep = 1
                End If
                TextBox1.Text = ""
                Call Me.Form1_Activated(Nothing, Nothing)   '表示更新の為、強制的にForm1_Activatedをコール
            End If
        End If

    End Sub

End Class

 ソースをご覧になるとお分かりになるように、バーコードリーダーを使うための特別な処理は何もありません。 キーボードから入力された値を比べてOK/NGを判定しているだけです。まぁ、キーボードインタエーフェイスなのであたりまえですね。

キーボードインターフェイスを利用したプログラムを作成する場合は、今回のプログラムのように、画面上でフォーカスを取得できる入力フィールドをひとつだけにする事、フォーカスを失っている時はオペレータに通知してあげる事などを気をつけてあげると良いでしょう。

*

今回作成したプログラムのプロジェクトファイルはこちらです。




トップへ戻る

記事一覧




[stmx] - ソーシャルマーケットプレイス

[stmx] - ソーシャルマーケットプレイス
inserted by FC2 system