環境
- Windows XP x32 Visual Studio 2005 Standard Edition
- Windows Mobile 2003(Pocket PC 2003)を実行しているHoneywell Dolphin 9500
- バーコードスキャナーと白黒カメラを内蔵
- ここにあるSDKを使用します。
- .NET Compact Framework1.0SP3および.NETFramework1.1
- VC#の使用
ゴール
個人がバーコードをスキャンして画像をキャプチャできるアプリケーションを作成しようとしています。これらのことは同時に起こるべきではありません。ユーザーはバーコードスキャンを再確認してから、画像キャプチャを処理するアプリケーションの部分に移動できる必要があります。
問題
行番号は、以下の「コード」セクションのフレンドペーストリンクにある私のコードを参照しています。
2つのイベントハンドラーを配置しています。1つはバーコードスキャナーコントロールからのデコードイベント用で、もう1つはKeyDownイベントを介して画像キャプチャコントロールを呼び出すためのものです。デコードコントロールには、独自のイベント/ハンドラーDecodeEventHandlerと、列挙型(lns 201および202)が設定されたトリガーキーがあります。ただし、画像コントロールはそうではありません。そのドキュメントには、フォームにKeyDownイベントハンドラー(ln 120)とトリガーキー列挙型(ln 178)が必要であると記載されています。アプリケーションを実行すると(SelectedIndexChanged [ln 76]イベントハンドラーが配置されていない場合)、バーコードスキャナーは正常に機能しますが、画像キャプチャコントロールとデバイス(この場合はSCAN)のトリガーキーを押すと、ハンドヘルドはバーコードをスキャンしているように動作します(赤いライトが点灯し、緑の照準ライトが表示されます、
私が試したこと
- 重要:アプリケーションからデコードコントロールを削除すると、イメージコントロールが機能します。画像コントロールのみを使用して別のアプリケーションを作成すると、機能します。
- 210行目にブレークポイントを設定しましたが、KeyDownイベントがヒットしないことがわかりました。この時点で、イベントハンドラーまたはコントロールを何らかの方法で分離しようとしたため、タブコントロールにSelectedIndexChangedイベントハンドラーを導入し、適切なコントロールを使用してタブに切り替えたときに、イベントハンドラーを削除しようとしました。DecodeEventハンドラーを削除することはできましたが、作成したKeyDownイベントハンドラーデリゲートをヒットできませんでした。
- HoneywellのSDKのデコードコントロールとイメージコントロールの両方に、(ドキュメントを引用するために)「スキャンエンジンから切断する」という「切断」イベントがあります。そこで、切り替えたタブに基づいてコントロールを切断して再接続しようとしましたが、これでも失敗しました。
- また、フォームがフォーカスを失うと、フォームイベントが中断されることがあることもどこかで読みました。そこで、Form.LostControlイベント/ハンドラーを実装し、this.Focus()を挿入して、フォーカスをフォームに戻しましたが、役に立ちませんでした。
- KeyPreview = trueを提案し、フォームレベルでイベントを処理/委任することを提案する複数の人々に出くわしました。私のFormオブジェクトにはKeyPreviewメンバーがないため、.NETCompactFrameworkバージョン1はこれを実装していないようです。
- TriggerKey列挙型(202行目の例)内に、デバイスのEnterキーの列挙型があります。それをイメージコントロールまで配線し、デコーダーコントロールまでスキャンしてみましたが、それでもKeyDownイベントをヒットできませんでした。
コード
http://friendpaste.com/355cQOCghvPkE5YR29lthO
やや長い(〜230行)ので、フレンドペーストリンクとしてコードを投稿しました。ここに含めるだけでよいかどうか教えてください。
追加情報が必要ですか?
遠ざけてください、そして私は最善を尽くします!
私はこのHoneywellDolphin9500にタグを付けていただろうが、私は新しいユーザーです。