1

ユーザーがバーコードをスキャンし、アプリケーションがバーコードをデコードしてから、データベースに行を挿入する、単純なWindowsフォームアプリケーションを試しています。基本的なトラックアプリケーション。Motorolaスキャナーを手に取り、Windows開発用のSDKをダウンロードしました。「付録ASCANNERSDK APIを使用した簡単なアプリケーションの作成」は、開発者ガイド(http://support.symbol.com/support/search.do?cmd=displayKC&docType=kc&externalId=14978402apdf&sliceId )から始めるのに適しているように思われましたが、読みました。 =&dialogID = 311240750&stateId = 1%200%20311224446)。5つのコンソールの例は正常に機能していますが、Windowsフォームアプリケーションを機能させることができません。OnBarcodeイベントがトリガーされることはありません。私はこのビデオをフォローしました(http://www.youtube.com/watch?v=GfIWWUw4YSc&t=15m47s)モトローラによるステップバイステップ。

これと同様の問題が発生しているようです。MotorolaバーコードスキャナーSDKイベントC#ですが、USB接続を使用しています。

サンプルコードが.net2.0で作成されたものであることに気付いたので、プロジェクトを再コンパイルしようとしましたが、それでも機能しませんでした。次に、CCoreScannerClassをCCoreScannerに変更して、埋め込み相互運用機能が機能するようにしましたが、それも役に立ちませんでした。サンプルコードは次のとおりです。

using CoreScanner;

namespace Scanner_WindowsFormsApplication
{
public partial class Form1 : Form
{
    CCoreScanner cCoreScanner;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    void OnBarcodeEvent(short eventType, ref string pscanData)
    {
        string barcode = pscanData;
        this.Invoke((MethodInvoker)delegate { textBox1.Text = barcode; });


    }
    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            //Instantiate CoreScanner Class
            cCoreScanner = new CCoreScanner();
            //Call Open API
            short[] scannerTypes = new short[1];//Scanner Types you are interested in
            scannerTypes[0] = 1; // 1 for all scanner types
            short numberOfScannerTypes = 1; // Size of the scannerTypes array
            int status; // Extended API return code
            cCoreScanner.Open(0, scannerTypes, numberOfScannerTypes, out status);
            // Subscribe for barcode events in cCoreScannerClass
            cCoreScanner.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent);
            // Let's subscribe for events
            int opcode = 1001; // Method for Subscribe events
            string outXML; // XML Output
            string inXML = "<inArgs>" +
            "<cmdArgs>" +
            "<arg-int>1</arg-int>" + // Number of events you want to subscribe
            "<arg-int>1</arg-int>" + // Comma separated event IDs
            "</cmdArgs>" +
            "</inArgs>";
            cCoreScanner.ExecCommand(opcode, ref inXML, out outXML, out status);
            Console.WriteLine(outXML);
        }
        catch (Exception exp)
        {
            Console.WriteLine("Something wrong please check... " + exp.Message);
        }
    }
}

}

開発者ガイドを読んだところ、「スキャナーがバーコードをキャプチャするとBarcodeEventがトリガーされます。BarcodeEventsを受信するには、アプリケーションはSUBSCRIBE_BARCODEイベントタイプでREGISTER_FOR_EVENTSメソッドを実行する必要があります。」私はc#を初めて使用するので、これが何を意味するのか、そしてそれが例にどのように適用されるのかはよくわかりません。

https://stackoverflow.com/users/68043/scottがこのスレッドを読んだ場合、onBarcodeEventをスレッドで機能させる方法を知りたいです:イベントから呼び出されたときにダイアログがハングする

4

4 に答える 4

8

Motorola Scanner SDKからバーコードイベントを取得するには、スキャナーがIBMハンドヘルドUSBまたはSNAPIにある必要があります。シリアルポートに接続されている場合は、NIXDORFモードBである必要があります。スキャナーがHIDKBモードで接続されている場合、スキャナーはキーボードとして機能するため、SDKを介してバーコードイベントを発生させることはできません。私のアドバイスは、最初にサンプルアプリケーションの実行可能ファイルがSDKに付属していることを試して、提供されたアプリケーションからイベントを確認できるかどうかを確認することです。

スキャナーを適切なモードに構成するには、ドキュメント(5ページと6ページ)を参照してください。

于 2012-05-10T03:24:42.650 に答える
2

バーコードスキャナーを使用するたびに、バーコードスキャナーをキーボードとして使用する方がはるかに簡単であることがわかりました。つまり、WinFormsアプリのフォーカスをテキストボックスに置いてバーコードがスキャンされるのを待ってから、TextBoxのtext_changedイベントを処理します

于 2012-05-09T17:04:11.880 に答える
0

私はちょうど同じ問題を経験しました。Motorolaのドキュメントをよく見てみると、次の2行は、イベントを取得することをスキャナーに通知するだけであることがわかりました。(イベントをオンにする)

int upcode = 1001
cCoreScanner.ExecCommand(opcode, ref inXML, out outXML, out status);

バーコードスキャンを実行するには、オペコード2011を送信する必要があります。そのため、コードは次のようになります。

int upcode = 1001
cCoreScanner.ExecCommand(opcode, ref inXML, out outXML, out status);
int upcode = 2011
cCoreScanner.ExecCommand(opcode, ref inXML, out outXML, out status);

これを行うとき、私はBarcodeEventを取得します

于 2013-05-08T10:57:46.213 に答える
-1

オペコード2011を使用して、USB HIDKBスキャナーのバックコードイベントをトリガーできますか?

次のコードも追加しましたか?

"<inArgs><scannerID>1</scannerID></inArgs>"

2011コマンドを実行するとき?

于 2014-12-04T07:10:29.590 に答える