2013-10-17 59 views
1

我使用Motorola EMDK sdk for .net讀取條形碼,除符號和符號外,一切都正常。如何使用emdk讀取特殊符號

http://goo.gl/7JkuYX

http://goo.gl/1w0vRi

請參閱下面我的代碼:

MyReader = new Symbol.Barcode.Reader(); 
MyReader.Actions.Enable(); 
MyReader.Decoders.DisableAll(); 
MyReader.Decoders.CODE128.Enabled = true; 
MyReader.Decoders.CODE128.MinimumLength = 2; 
MyReader.Decoders.CODE128.MaximumLength = 55; 
MyReader.Decoders.CODE128.EAN128 = true; 
MyReader.Decoders.CODE128.ISBT128 = true; 
MyReader.Decoders.CODE128.Other128 = true; 

MyReader.Decoders.SetEnabled(Symbol.Barcode.DecoderTypes.CODE128, true); 
MyReaderData = new Symbol.Barcode.ReaderData(Symbol.Barcode.ReaderDataTypes.Binary, Symbol.Barcode.ReaderDataLengths.MaximumLabel); 
MyEventHandler = new EventHandler(MyReader_ReadNotify); 
MyReader.Actions.Enable(); 
+0

定義「不行」 –

+2

的「(」和「)」被添加到人類可讀的部分,它們不是在條形碼編碼。他們是GS1-128應用程序標識符。 – charlesbridge

+0

謝謝\t charlesbridge – Miken

回答

1

像charlesbridge說,所顯示的信息不完全匹配在GS1條碼編碼的數據。

括號內的數據稱爲一個應用標識符(AI)。每個AI後面跟着它的數據。例如,(11)131011意味着該項目在10月11日,2013年

生產如果你想重新顯示的字符串,你的應用程序需要知道每個AI的最大長度。如果一個AI的數據比它的最大長度短,它將被一個0x1d字符(其中存在於解碼數據中,但不會在屏幕上呈現)終止。

在您的例子只有序列號(21)具有可變長度,但因爲它是在條形碼的最後AI,不需要終止字符。

the GS1 spec如果你喜歡讀書,或爲this list of application identifiers的快速參考。

作爲用於確定該條形碼是否是GS1條形碼,則ReaderData對象包含一個Type屬性其中,至少我的設備上,將是RSS...值之一。