2017-03-01 110 views
0

我正在C#中開發一個程序來處理UPS運輸請求,將它們註冊到客戶端數據庫中,並將新標籤發送到聯網的ZPL打印機。從c#編程切割ZPL打印機

我們正在使用帶切刀的GX420T Zebra打印機。打印標籤通過IP無任何問題。

我遇到了切割標籤的問題。客戶希望每個貨件的標籤連接,但是與其他貨件的標籤分開。 (即僅在打印所有貨物標籤後才切割)如果單一標籤的貨物按預期切割,則標籤被切割。隨着多個標籤的出貨,切割機從不運行。

 bool print = true; //true: If printing fails on the first label, 
          // do not try the rest. 
          //false: do not print 

     //Set printer mode 
     print = parseZPL.printZPL_IP(@"^XA^MMD^XZ"); 

     //Save and print Package labels 
     foreach (XElement package in Packages) 
     { //Parse XML 
      if (package.Name.LocalName == "PackageResults") 
      { 
       //Pulling Package and Shipping label information from XML 
       string ShippingLabel = package.Element(ship + "ShippingLabel").Element(ship + "GraphicImage").Value; 

       //convert string to Base64 
       byte[] ZPLbytes = Convert.FromBase64String(ShippingLabel); 

       if (print) 
       { 
        print = parseZPL.printZPL_IP(System.Text.Encoding.ASCII.GetString(ZPLbytes)); 
       } 
      } 
     }; 

     if (print) 
     { 
      print = parseZPL.printZPL_IP(@"~JK"); 
     } 

我試圖〜JK命令之前加入一個睡眠()命令,沒有成功。我沒有找到可行的解決方案,而是搜索了ZPL文檔。

任何建議將不勝感激。謝謝!

+0

據我記憶,^ MMC命令是爲了剪切。 – liquide

+0

@liquide,我相信你是正確的,但是,它會在每個標籤後切割,而且我的客戶只有在打印特定貨物中的所有標籤後纔想切割。我會嘗試更新我的問題,以便更清楚地說明這一點。 – Abe

+0

您的多貨標籤與單貨運標籤有什麼不同?例如打印機模式的重置?或者第二個標籤的printZPL_IP()的輸出爲false? (所以〜JK可能會因爲print == false而被忽略) – Johan

回答

1

打印一批標籤時,我認爲您需要在第一個標籤的開頭設置^MMT(撕下),並在最後一個標籤的開頭設置^MMC(cut)。

+0

好主意,我現在正在測試它。看起來** TearOff **可能對身體用戶來說是個好名字,但在編程方面,** DoNothing **可能更具描述性。 (如果我正確理解這一點) – Abe

+0

謝謝,我的客戶現在滿意。 @標記 – Abe