2017-04-21 243 views
1

我需要什麼生成GS1 DataMatrix二維使用ZXing.Net

是產生工作GS1數據矩陣,採用這種測試內容:

(240)1234567890(10)AA12345(11)123456 (21)1(96)1234567

步驟

我已經下載主編的NuGet包從這裏:

enter image description here

我創建了使用此代碼控制檯應用程序:

private static void DoGs1DataMatrixStuff() 
{ 
    var writer = new BarcodeWriter 
    { 
     Format = BarcodeFormat.DATA_MATRIX 
    }; 

    writer 
     .Write("(240)1234567890(10)AA12345(11)123456(21)1(96)1234567") 
     .Save(@"C:\Temp\barcode.png"); 
} 

有沒有明顯的特定GS1_DataMatrix格式我可以使用...

,讓我

enter image description here

若由我的智能手機掃描儀應用程式閱讀,使我原本呈現的文字內容,而不是與FNC1的格式,我期待GS1:

(240)1234567890(10)AA12345(11)123456(21)1(96)1234567

而它應該是

24AA12345 11123456211 961234567

來自其他來源(不是我可以用源)我得到這個條碼:

enter image description here

使用我的智能手機應用程序這個讀入正確數據。

問題

我怎樣才能重新創建工作GS1數據矩陣,採用ZXing.Net?

也看到

這個link,克里斯Bahns提高我有同樣的問題,但他的要求沒有得到一個工作的答案。

回答

1

你必須使用一個格式化字符串與ASCII字符29(GS - 組分隔符):

< GS> 24個< GS> 10AA12345 < GS> 11123456211個< GS> 961234567

(更換「 < GS>「with ASCII 29)

自版本0.15起,ZXing.Net支持帶ASCII編碼器的GS符號。它用生成的數據矩陣圖像中的FNC1碼字(232)替換ASCII 29值。

這只是一個低層次的支持。沒有內置類或類似的東西可以理解具有固定或可變長度的AI(應用程序標識符)(類似於vCards,vEvent,ISBN ......的結果解析器類)。

+0

這就是這個:'↨'?這導致'消息包含ISO-8859-1編碼以外的字符.'。 – Spikee

+0

這與'BarcodeFormat.DATA_MATRIX'有關,如果我把它切換到'QR_CODE'就沒有這樣的錯誤,但是當然數據不好,因爲'↨'顯示爲'?'(QR_CODE不能處理它)。 – Spikee

+0

不,這不是那個角色。 ASCII 29不可打印。例如,您可以使用以下代碼段編碼這樣的字符串: 'Writer .Write((char)29 +「24」+(char)29 +「10AA12345」+(char)29 +「11123456」+(char) 29 +「211」+(char)29 +「961234567」);' 如果使用具有固定數據長度的應用標識符,則不需要每個'(char)29'。 – Michael