首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有C#的斑马标签打印机

带有C#的斑马标签打印机
EN

Stack Overflow用户
提问于 2014-06-03 11:16:58
回答 2查看 6.4K关注 0票数 3

我在使用ZDesigner GK420T使用C# .NET打印标签时遇到了问题。我将下面的字符串转换为Bytes并传递给打印机。

代码语言:javascript
复制
^XA 
^FO3,3^AD^FDZEBRA^FS
^XZ

预期的结果是,打印机应该打印‘斑马’,但它没有。

我的C#代码:

代码语言:javascript
复制
StringBuilder sb; sb = new StringBuilder();
if (frmPrintJob._type != 1) 
{
    sb.AppendLine("^XA"); 
    sb.AppendLine("^FO3,3^AD^FDZEBRA^FS"); 
    sb.AppendLine("^XZ"); 
} 
int intTotalPrinted = 0; 
for (int i = 1; i <= NoOfCopies; i++) 
{ 
    if (RawPrinterHelper.SendStringToPrinter(PrinterName, sb.ToString()) == true) 
        intTotalPrinted++; 
}

我在这里做错什么了?我需要额外的代码吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-03 11:28:39

首先,您需要清除以下内容:

  • 您是打印RFID标签还是条形码标签?
  • 打印机是否通过USB或并行口连接?

例如,下面的代码片段使用并行口lpt1在斑马打印机上打印RFID标签

代码语言:javascript
复制
String strPath = "C:\\Zebra";
String zplStart = "CT~~CD,~CC^~CT~\r\n^XA\r\n^MMT\r\n^PW831\r\n^LL0599\r\n^LSO\r\n";
String zplMiddle = "^FT50,180^BY3^BCN,200,N,N,N^FD"; ///+barcode
String zplMiddle2 = "^FS\r\n^FT600,145^AAN,30,10,^FH\\^FD";///+barcode 

String zplMiddle3 = "^FS^^RS8,,800,5^RFW,H^FD";//+RFID

String splend1 = "^FS\r\n^RWH,H^FS\r\n^RR10^FS\r\n^PQ1\r\n^XZ";
string filePath = strPath + "\\Books" + ".zpl";
string Prefix="..." //Define tag ID Prefix
string Sufix =".."//Define tag ID suffix
RFID ="Prefix"+ barcode +Sufix;
StreamWriter strw = new StreamWriter(filePath);
strw.Write(zplStart + zplMiddle + barcode + zplMiddle2 + barcode+ zplMiddle3 + RFID+  splend1); // assemble the three parts of the ZPL code

string command = "copy " + filePath + " lpt1"; //prepare a string with the command to be sent to the printer
// The /c tells cmd that we want it to execute the command that follows, and then exit.
System.Diagnostics.ProcessStartInfo sinf = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

sinf.UseShellExecute = false;
sinf.CreateNoWindow = true;

System.Diagnostics.Process p = new System.Diagnostics.Process(); // new process            
p.StartInfo = sinf;//load start info into process. 
p.Start(); //start process (send file to printer)

上面的示例是RFID标签的示例,在您的示例中,我猜要输入的zpl字符串是:

代码语言:javascript
复制
string zpl="^XA^\r\nFO3,3^AD^FDZEBRA^FS\r\n^XZ";

注意,我使用的是\r\n,以便移到下一行。

票数 2
EN

Stack Overflow用户

发布于 2014-06-03 16:32:54

打印机处理普通的ASCII编码。确保使用Encoding.ASCII输出文本。另一个问题是,C#无法直接写入并行端口。apomene显示了对文件的创造性使用,然后将其复制到lpt1中。问题是他没有使用ASCII,而是发送UTF-16

我不知道您的RawPrinterHelper是什么,但是它是以ASCII还是Unicode的形式发送文本呢?

解决这些问题可能会导致成功的印刷。

我在这里找到了打印机的文档:http://www.servopack.de/support/zebra/ZPLII-Prog.pdf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24013799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档