CoreScanner(摩托罗拉)事件没有被触发C#

Cal*_*dus 1 c# barcode motorola

我正在尝试一个简单的Windows窗体应用程序,用户扫描条形码然后应用程序解码条形码,然后将一行插入数据库.基本的跟踪应用程序.我拿起摩托罗拉扫描仪并下载了用于Windows开发的SDK.我读过"附件A使用SCANNER SDK 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).

我似乎遇到了类似的问题:摩托罗拉条码扫描器SDK事件C#但我正在使用USB连接.

我意识到示例代码是原始的.net 2.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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我阅读了开发人员指南并发现:"当扫描器捕获条形码时触发BarcodeEvent.要接收BarcodeEvents,应用程序需要使用SUBSCRIBE_BARCODE事件类型执行REGISTER_FOR_EVENTS方法." 我是c#的新手,所以我真的不知道这意味着什么以及它如何适用于这个例子.

如果/sf/users/4763041/读取此主题,我很想知道如何让onBarcodeEvent在你的线程中运行:从事件调用时,对话框挂起

小智 7

要从Motorola Scanner SDK获取条形码事件,您的扫描仪应位于IBM掌上电脑USB或SNAPI中.如果它连接到串口,则它应该处于NIXDORF MODE B.如果您的扫描仪以HIDKB模式连接,则您无法通过SDK获得条形码事件,因为扫描仪可用作键盘.我的建议是首先尝试SDK附带的示例应用程序的可执行文件,并检查是否可以从提供的应用程序中看到该事件.

  • 晚了,但还是.这是我的(第一个)问题.我试着即插即用.每个人都应该先运行123scan,然后设置一个新的配置文件. (2认同)