已经发表了与此非常相似的其他帖子,但是,我一直在不懈地尝试使用其他线程中提供的解决方案使其工作,但没有任何运气。
我有一个摩托罗拉 DS3578 无线扫描仪。我试图让我的 C# 应用程序在扫描条形码时处理一个事件。我一直在参考摩托罗拉开发者文档。
这是我的代码:
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,列出可用的扫描器,使用 opcode 1001 启用处理事件,并添加 OnBarcodeEvent 方法。
我得到以下输出,光标准备好在底行输入:
当我扫描条形码时,光标所在的位置没有输入任何内容。OnBarcodeEvent() 中的行应该正在执行,将一条消息写入控制台。
我知道扫描仪能够监听事件,因为当我将它与摩托罗拉提供的示例应用程序一起使用时,我得到了这个:
最后一点,我已将扫描仪从“HIDKB”更改为“IBM HANDHELD”,以便可以处理事件。
有人对如何开始OnBarcodeEvent
工作有任何建议吗?