c# - CoreScanner(Motorola)事件未触发C#

标签 c# barcode motorola

我正在尝试一个简单的Windows窗体应用程序,其中用户扫描条形码,然后该应用程序对条形码进行解码,然后在数据库中插入一行。基本的跟踪应用程序。我拿起了Motorola扫描仪并下载了用于Windows开发的SDK。我阅读了《开发人员指南》(http://support.symbol.com/support/search.do?cmd=displayKC&docType=kc&externalId=14978402apdf&sliceId=&dialogID=311240750&stateId=1%200%20311224446)中的“附录A使用SCANNER SDK API编写简单应用程序”的好地方。我得到了5个控制台示例的正常运行,但无法使Windows窗体应用程序正常工作,因此从未触发过OnBarcode事件。我逐步跟踪了摩托罗拉的这段视频(http://www.youtube.com/watch?v=GfIWWUw4YSc&t=15m47s)。

我似乎有一个与此类似的问题:Motorola barcode scanner SDK events 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);
        }
    }
}


}

我通读了《开发人员指南》,发现以下内容:“ BarcodeEvent
当扫描仪捕获条形码时触发。要接收BarcodeEvent,应用程序需要使用SUBSCRIBE_BARCODE事件类型执行REGISTER_FOR_EVENTS方法。

如果https://stackoverflow.com/users/68043/scott读取此线程,我很想知道如何使onBarcodeEvent在您的线程中起作用:Dialog hangs when called from event

最佳答案

要从Motorola Scanner SDK获取条形码事件,您的扫描仪应位于IBM手持式USB或SNAPI中。如果连接到串行端口,则它应处于NIXDORF模式B。如果您的扫描仪以HIDKB模式连接,则由于SDK是扫描仪,因此无法通过SDK进行条形码事件。我的建议是首先尝试使用SDK附带的示例应用程序的可执行文件,并检查是否可以从提供的应用程序中看到事件。

关于c# - CoreScanner(Motorola)事件未触发C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520639/

相关文章:

c# - XmlDocument.Load 与 XmlDocument.LoadXml

python - 如何使用变量通过 python-barcode 生成条形码

xamarin - CipherLAB - 条码扫描仪事件 - xamarin.forms

android - 无法通过 adb 在 Ubuntu 9.10 上访问 Motorola Milestone(HTC Magic 工作得很好)

c# - 如何在 Visual Studio 2015 中进行单元测试

c# - 如何从 SQL 数据库获取数据到组合框 - C#

c# - 更改进程优先级不起作用

barcode - 任何免费的 UPC/条形码数据库

android - Motorola CLIQ XT 上的网络接口(interface)名称是什么?

android - 需要在 Android ICS 上使用摩托罗拉 GATT 配置文件 API 的蓝牙低功耗示例