Zebra Scanner sdk 사용법

서병수·2023년 8월 5일
0

아래는 Zebra scanner를 Application에 등록하는 코드이다.

try
{

    cCoreScannerClass = new CCoreScannerClass();

    short[] scannerTypes = new short[1];
    scannerTypes[0] = 1; 
    short numberOfScannerTypes = 1; 
    int status; 
    cCoreScannerClass.Open(0, scannerTypes, numberOfScannerTypes, out status);
   
   
    cCoreScannerClass.BarcodeEvent += new_ICoreScannerEvents_BarcodeEventEventHandler(OnBarcodeEvent);

    int opcode = 1001; 
    string outXML; 
    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);
    Console.WriteLine(outXML);
} 

catch (Exception exp)
{
    Console.WriteLine("Something wrong please check... " + exp.Message);
}


void OnBarcodeEvent(short eventType, ref string pscanData)
{
	string barcode = pscanData;
	this.Invoke((MethodInvoker)delegate { textBox1.Text = barcode; });
}
  1. this.Invoke는 ()안에 있는 메서드를 실행하는 주체가 UI스레드가 되도록 한다.
  2. (MethodInvoker) 매개변수가 없는 델리게이트를 나타낸다.

다음은 XML로 표시된 데이터를 추출하는 방법이다.
16진수로 표시되어서 10진수로 바꾸는 코드도 추가했다.

 static void Main(string[] args)
        {
            string xmlData = @"<outArgs>
                            <scannerID>1</scannerID>
                            <arg-xml>
                                <scandata>
                                    <modelnumber>DS6707-SR20001ZZR</modelnumber>
                                    <serialnumber>7114000503308</serialnumber>
                                    <GUID>9008A01BB72BA34BB519806B63701AAA</GUID>
                                    <datatype>11</datatype>
                                    <datalabel>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</datalabel>
                                    <rawdata>0x39 0x37 0x38 0x30 0x32 0x30 0x31 0x34</rawdata>
                                </scandata>
                            </arg-xml>
                        </outArgs>";

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xmlData);
            XmlNode modelnumber = xmlDoc.SelectSingleNode(".//rawdata");
            string modelnumberText = modelnumber.InnerText;
            string[] hexValueArray = modelnumberText.Split(' ');
            string decimalValues = "";
          
            foreach (string hexValue in hexValueArray)
            {
                if (hexValue.StartsWith("0x")) // 16진수 값인지 확인
                {
                    int decimalValue = Convert.ToInt32(hexValue, 16); // 16진수를 10진수로 변환
                    decimalValues += decimalValue.ToString(); // 변환된 값을 문자열에 추가
                }
            }
            decimalValues.Trim();
            Console.WriteLine(decimalValues);
        }
    }
profile
안녕하십니까 인사올립니다

0개의 댓글