2017-03-01 13 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コマンドの前にsleep()コマンドを追加しようとしましたが、成功しませんでした。私は働いている解決策を見出すことなくZPLドキュメントを精査しました。

ご意見をいただければ幸いです。ありがとうございました!

+0

私が覚えている限り、^ MMCコマンドはカット用です。 – liquide

+0

@liquide、私はあなたが正しいと信じていますが、各ラベルの後に切れ、顧客は特定の出荷のすべてのラベルが印刷された後にのみカットしたいと考えています。私は質問をより明確にするように更新しようとします。 – Abe

+0

複数の出荷ラベルと1つの出荷ラベルで異なるものはありますか?例えばプリンタモードのリセット?または、2番目のラベルのprintZPL_IP()の出力はfalseですか? (〜JKはprint == falseのためスキップされるかもしれません) – Johan

答えて

1

ラベルのバッチを印刷するときは、最初のラベルの先頭に^MMT(tearoff)、最後のラベルの先頭に^MMC(切り取り)を設定する必要があると思います。

+0

良いアイデア、私は今それをテストしています。 ** TearOff **は物理ユーザーのための良い名前かもしれませんが、プログラミング面では** DoNothing **はもっと説明的かもしれません。 (私がこれを正しく理解している場合) – Abe

+0

ありがとう、私のクライアントは今満足しています。 @マーク – Abe

関連する問題