已经制作了与此非常相似的其他帖子,但是,我已经不遗余力地尝试使用其他线程中提供的解决方案,但没有任何运气。
我有一台摩托罗拉DS3578无线扫描仪。我正在尝试让我的C#应用程序在扫描条形码时处理事件。我一直在参考Motorola Developers文档。
这是我的代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using CoreScanner;
namespace MotarolaScannerTesting
{
class Program
{
//declare the core scanner class
static CCoreScannerClass cCoreScannerClass;
static void Main(string[] args)
{
cCoreScannerClass = new CoreScanner.CCoreScannerClass();
//CALL OPEN API
short[] scannerTypes = new short[1]; //scanner types intrested in
scannerTypes[0] = 1; // set all scanner types to 1
short numberOfScannerTypes = 1; // size of the scanner type array
int status; // Extend API return code
cCoreScannerClass.Open(0, scannerTypes, numberOfScannerTypes, out status);
if (status == 0)
Console.WriteLine("CoreScanner API OPEN");
else
Console.WriteLine("CoreScanner API CLOSED");
// Lists all scanners connected to the host computer.
// will return nothing
short numberOfScanners;
int[] connectedScannerIDList = new int[255];
string outXML;
cCoreScannerClass.GetScanners(out numberOfScanners, connectedScannerIDList, out outXML, out status);
//below does not work because string is an xml file and is never NULL
Console.WriteLine(outXML);
// Console.WriteLine(outXML.ToString());
int opcode = 1001;
string inXML = "<inArgs>" +
"<cmdArgs>" +
"<arg-int>1</arg-int>" +
"<arg-int>1</arg-int>" +
"</cmdArgs>" +
"</inArgs>";
cCoreScannerClass.ExecCommand(opcode, ref inXML, out outXML, out status);
opcode = 2011;
inXML = "<inArgs>" +
"<scannerID>1</scannerID>" +
"</inArgs>";
cCoreScannerClass.ExecCommand(opcode, ref inXML, out outXML, out status);
Console.Read();
}
void OnBarcodeEvent(short eventType, ref string pscanData)
{
Console.WriteLine("Scannner Event! Scan Data: " + pscanData);
}
}
}
如上所示,我打开扫描仪API,列出可用的扫描仪,使用操作码1001启用处理事件,并添加OnBarcodeEvent方法。
我得到以下输出,光标准备好在底线输入:
当我扫描条形码时,光标所在的位置没有输入任何内容。 OnBarcodeEvent()中的行应该执行,将消息写入控制台。
我知道扫描仪能够收听事件,因为当我将它与摩托罗拉提供的示例应用程序一起使用时,我得到了这个:
作为最后一点,我已将扫描仪从“HIDKB”更改为“IBM HANDHELD”,因此可以处理事件。
有人有任何建议如何让OnBarcodeEvent
正常工作吗?
答案 0 :(得分:1)
我在任何地方都看不到对OnBarcodeEvent的引用。它不会压倒一个祖先。那么世界将如何被称为?