- PR -

バーコードリーダで入力したデータを取得するんですが・・・

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-14 12:43
私も設計で逃げた人ですね。

バーコードリーダーがしょぼかったのもあって、
手入力にも対応できることを考慮しました。

そこで、どんな状態でもキー入力を受け付ける代わりに、
他の入力項目は一切なしにするという方式でした。

#あんまり参考になる話ではありませんが・・・
mura
会議室デビュー日: 2003/08/13
投稿数: 9
投稿日時: 2006-07-14 13:22
じゃんぬねっとさん
引用:
まず、バーコード リーダからの入力は、何を通して行われるのでしょうか?
専用のコンポーネントがあれば、そちらでイベントとして取得できるでしょうけど、
ご質問内容から察するに、生で (WM_CHAR を通して) 行われるのでしょうか? (つらいですね)
WndProc メソッドをオーバーライドして、WM_CHAR を補足しパラメータを確認してみてください。


メーカーからの回答では、専用のコンポーネントはないそうです。
つまり、生で取得することになると思います。
WM_CHARでパラメータ確認しました。キーボード入力と同様に取得できますが、
ウィンドウにフォーカスがない場合は、取得できませんでした。

わちゃさん
引用:
フォーカスについては、USB 接続でもドライバ付きのバーコードリーダーであれば、希望のようなこともできるかと思いますが、そうじゃないときついと思います。
RS-232C 接続のバーコードリーダーとかの方が無難な印象です。
キーボードとの区別は、バーコードリーダーの設定でバーコードの最初に特殊文字を付加してあげることで、バーコードリーダーかの判別に利用できます。
キーボードでも同じキャラクターを送られるとどうしょうもないですが、タイムアウトと組み合わせてやるとほぼうまく認識できるかと思います。


ドライバはないそうです。
RS-232Cに変更できればしたいですが、指定の型式なので・・・
特殊文字というか*(アスタリスク)は付加できます。アスタリスクはキーボードでも入力できますがタイムアウトと組み合わせる方法を考えてみます。

R・田中一郎さん
引用:
多分、Code39 だと思いますが、*が入力された時点で、*CRLF までの入力されたコードを全て横取りしてっ・・・て処理を書いたことがあったもんで(__;)
ただし、他の入力では * が入力されないものという前提です。


Code39です。*〜*CRLFを横取りしたいです。あとはタイムアウトを組み合わせてってことですね。

ぽてCCPさん
引用:
私なら、バーコードで読み込むまで、キーボードの入力ボックスは隠しておくな。
順番的に逆なら、その逆で。
んで、強制的に入力ボックスを表示させるボタンかなんかつけて。


この方法なら、横取りなど考えなくてよいですね。
最初の仕様でそうしておけば・・・

かつのりさん
引用:
私も設計で逃げた人ですね。
バーコードリーダーがしょぼかったのもあって、
手入力にも対応できることを考慮しました。

そこで、どんな状態でもキー入力を受け付ける代わりに、
他の入力項目は一切なしにするという方式でした。


逃げ出したい気持ちです・・・


今のところ、裏プロセス(画面とは関係ないEXEを常時起動)で*〜*CRLFを横取する。
キーボードより*が入力された場合でも、タイムアウト(スキャンスタートからCRLF入力までの時間)で判断する。
そこで、フォーカスがないときの入力キー横取り方法をご教示願います。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-14 13:50
引用:

muraさんの書き込み (2006-07-14 13:22) より:
そこで、フォーカスがないときの入力キー横取り方法をご教示願います。


これだとさすがに無理なんじゃないか・・
わちゃ
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 162
お住まい・勤務地: 東京
投稿日時: 2006-07-14 14:09
spy++ を裏で動かして、そのログを監視するとか、、、

#ゴミスマソ

甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-07-14 15:17
引用:

ぶさいくろうさんの書き込み (2006-07-14 13:50) より:
引用:

muraさんの書き込み (2006-07-14 13:22) より:
そこで、フォーカスがないときの入力キー横取り方法をご教示願います。


これだとさすがに無理なんじゃないか・・


GlobalHookを行えば出来るけれど、その手の処理を記述するならC++ですね。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-07-14 15:17
引用:

ぶさいくろうさんの書き込み (2006-07-14 13:50) より:
引用:

muraさんの書き込み (2006-07-14 13:22) より:
そこで、フォーカスがないときの入力キー横取り方法をご教示願います。


これだとさすがに無理なんじゃないか・・


GlobalHookを行えば出来るけれど、その手の処理を記述するならC++ですね。

スキルアップ/キャリアアップ(JOB@IT)