Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么即使我';我在添加crlfs?_C#_Compact Framework_Windows Ce_Zebra Printers_Opennetcf - Fatal编程技术网

C# 为什么即使我';我在添加crlfs?

C# 为什么即使我';我在添加crlfs?,c#,compact-framework,windows-ce,zebra-printers,opennetcf,C#,Compact Framework,Windows Ce,Zebra Printers,Opennetcf,这将在Zebra QL220皮带打印机上打印(尽管仍然很难看),该打印机来自我在摩托罗拉MC3100手持设备上运行的CE/CF应用程序: public void PrintBarcode(string barcode, string UPC, string description, decimal listPrice) { using (SerialPort serialPort = new SerialPort()) { serialPort.BaudRate

这将在Zebra QL220皮带打印机上打印(尽管仍然很难看),该打印机来自我在摩托罗拉MC3100手持设备上运行的CE/CF应用程序:

public void PrintBarcode(string barcode, string UPC, string description, decimal listPrice)
{
    using (SerialPort serialPort = new SerialPort())
    {
        serialPort.BaudRate = 19200;
        serialPort.Handshake = Handshake.XOnXOff; 
        serialPort.DataBits = 8;
        serialPort.Parity = Parity.None;
        serialPort.StopBits = StopBits.One; // other choice is Two (see p. 14-21 in CPCL pdf)
        serialPort.PortName = "COM1:"; 

        serialPort.Open(); 

        Thread.Sleep(2500); // I don't know why this is needed, or if it really is...

        serialPort.Write("! 0 200 200 210 1\r\n");

        serialPort.Write("TEXT 4 0 30 40 Hola el Mundo\r\n"); //Bonjour le Monde --- Hola el Mundo --- Hallo die Welt
        serialPort.Write("TEXT 4 0 30 40 \r\n");

        serialPort.Write("BARCODE-TEXT 7 0 5\r\n"); 
        serialPort.Write(string.Format("BARCODE 128 1 1 50 150 10 {0}\r\n", barcode));
        serialPort.Write("TEXT 4 0 30 40\r\n");
        serialPort.Write("FORM\r\n");
        serialPort.Write("PRINT\r\n");

        serialPort.Close();
    }
}
…但所有这些加在一起,就像半狂躁的青少年在摩什坑里一样——最后打印的条形码实际上位于纸上的最高点,“Hola el Mundo”和看起来像“FOIPM”的东西(这是怎么做到的?!?)

如果
“TEXT 4 0 30 40\r\n”
不是发送CRLF的方法,那么是什么

更新 我注意到我在打印条形码的args中有一个输入错误。这:

    serialPort.Write(string.Format("BARCODE 128 1 1 50 150 10 {0}\r\n", barcode));
…这应该是这样的:

    serialPort.Write(string.Format("BARCODE 128 1 1 50 150 130 {0}\r\n", barcode));
…但当我“修复”它时(将垂直起点从10更改为130),打印结果是相同的!请原谅我的法语,但是北达科他州到底发生了什么

更新2
不要紧,一旦我将修复添加到正确的位置,它确实可以工作(将“10”更改为“130”)。现在,我必须使它“智能”,因为它将考虑到以前的打印区域,并总是打印低于起始点+先前打印高度的后续行。

作为一般规则,考虑使用Stase.Enguly.NexLeI/P>


但是,在这种情况下,听起来你可能需要检查你的设备(斑马QL220)期望/需要一个直线进给。

< P>作为一个一般的规则,考虑使用Stase.Engule.NexLeI/P>
但是,在这种情况下,听起来您可能需要检查设备(Zebra QL220)对换行的期望/要求。

我不知道如何写入Zebra打印机,但是:

我看到“文本开始”(文本40 30 40)和“条形码开始”(条形码128 1 1)的代码

是否应该为“文本结束”或“条形码结束”设置一些代码


“下一行”的代码如何?

我不知道如何写入Zebra打印机,但是:

我看到“文本开始”(文本40 30 40)和“条形码开始”(条形码128 1 1)的代码

是否应该为“文本结束”或“条形码结束”设置一些代码


“下一行”的代码如何?

看起来就像是直接将CPCL写入打印机。您正在使用的文本命令包含命令中的x和y坐标本身,即您正在写入的“30”和“40”告诉打印机始终在坐标30,40处打印每行文本。尝试在要打印的后续文本行中更改这些坐标。据我所知,CPCL没有“自动换行”功能,因此您必须为每行文本手动执行此操作

或者,您可以将打印机置于行打印模式。在此模式下,打印机将只打印它接收到的任何文本,“\r\n”将使打印机在下一行开始打印。通过向打印机发送以下命令,可以切换行打印模式:

!!U1 setvar“device.languages”“line_print”[此处为新行字符]


资料来源:CPCL手册-

看起来就像是直接将CPCL写入打印机。您正在使用的文本命令包含命令中的x和y坐标本身,即您正在写入的“30”和“40”告诉打印机始终在坐标30,40处打印每行文本。尝试在要打印的后续文本行中更改这些坐标。据我所知,CPCL没有“自动换行”功能,因此您必须为每行文本手动执行此操作

或者,您可以将打印机置于行打印模式。在此模式下,打印机将只打印它接收到的任何文本,“\r\n”将使打印机在下一行开始打印。通过向打印机发送以下命令,可以切换行打印模式:

!!U1 setvar“device.languages”“line_print”[此处为新行字符]


资料来源:CPCL手册-

但是,文件上说“XXQT02-02-0555”是一个友好的名字;如果“XXQT02-02-0555”是一个友好的名字,我不想看到什么是不友好的名字——也许是“XXQT02-02-U-Studein'-Jerk-0555”?当将军们统治时,你就有了一场军事政变。但是,医生说“XXQT02-02-0555”是一个友好的名字;如果“XXQT02-02-0555”是一个友好的名字,我不想看到什么是不友好的名字——也许是“XXQT02-02-U-Studein'-Jerk-0555”?当将军们统治时,你已经有了一场军事政变。“文本”后面跟着带“\r\b”的args是“下一行”不需要“文本结束”或“条形码结束”;正如我在上次更新中所指出的,它现在按原样工作。“文本”后跟带有“\r\b”的参数是“下一行”,不需要“文本结束”或“条形码结束”;正如我在上一次更新中提到的,它现在可以正常工作了。所以,如果我使用行打印模式,对文本和条形码等的后续调用将忽略位置参数?看,这是:serialPort.Write(“文本40 30 40 Hallo die Welt\r\n\r\n”)。。。将变成这样:serialPort.Write(string.Format(“!U1 setvar{0}{1}”),“device.languages”,“line_print”);serialPort.Write(“文本4 0你好吗\r\n\r\n”)?不完全正确-如果发送行打印模式命令,则绝对会打印您发送的任何内容(除了离开行打印模式的命令和其他一些命令!)。因此,编写serialPort.Write(“Apples:$4.99\r\n”);serialPort.Write(“香蕉:$1.99”);将产生两行文本,一行在另一行之上。就这么简单。CPCL手册应该包含一个关于如何执行行打印的部分。好的,但是在这些写入行后面附加“\r\n”会将后续行推进到下一行,对吗?是的!在此上下文中,打印机将“\r\n”解释为新行(或者您可以使用System.Environment.Newline!),随后的文本将显示在下一行。我正在使用StringBuilder聚合将要发送给打印机的所有命令;如果我使用AppendLine()而不是Append(),这是否可以避免将“\r\n”附加到每一行?因此,如果我使用line打印模式,对文本和条形码等的后续调用将忽略位置参数