다른 게시물이 매우 유사하지만 다른 스레드에서 제공되는 솔루션을 사용하여이 기능을 사용하기 위해 끊임없이 노력했지만 많은 행운이 없었습니다. .바코드 가져 오기 스캔 이벤트 Motorola 바코드 스캐너
필자는 Motorola DS3578 무선 스캐너를 가지고 있습니다. 바코드를 스캔 할 때 C# 응용 프로그램에서 이벤트를 처리하려고합니다. Motorola 개발자 설명서를 참조하고 있습니다.
여기 내 코드입니다 : 위와 같이
이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
을 얻는 방법에 대한 제안이있는 사람이 있습니까?
'Console.Read() '이 (가) 차단되지 않았습니까? – jac
그러나 Console.Read()를 제거 할 때마다 창이 열리고 바로 닫힙니다. Console.Read()없이 화면에 콘솔을 유지할 수 있습니까? –
콘솔 프로그램이 이벤트에 응답하지 않습니다. 윈도우 프로그램으로 만들어야합니다. 나는 –