为什么Zebra QL 220打印机在与它通话时会关闭?

时间:2013-02-08 00:42:28

标签: compact-framework windows-ce zebra-printers

我有一个在手持设备(Motorola MC3100)上运行的C#CE CF代码,它应该使它所连接的Zebra QL220带式打印机打印一些东西(附在此帖子上的代码)。

当我启动应用程序时,我打开QL 220(通过其底部或顶部的绿色大按钮,具体取决于您的视角),但打印机在我的代码执行过程中自行关闭,因此没有任何内容打印(我假设没有打印的原因,无论如何)。

如果我对打印机静音的原因是对的,我该怎样做才能使其“开启”按钮“粘”?

我尝试将QL 220上的蓝色按钮混合在一起(也就是滚筒的图标和从中弹出的纸张),但所有这些都是“实时”吐出一些胶带/打印纸。

. . .
using (SerialPort serialPort = new SerialPort())
            {
                serialPort.BaudRate = 19200;
                serialPort.Handshake = Handshake.XOnXOff; // Handshake AKA Flowcontrol?
                serialPort.DataBits = 8;
                serialPort.Parity = Parity.None;
                serialPort.StopBits = StopBits.One;
                serialPort.PortName = "COM1:";
                serialPort.ReadTimeout = 500;
                serialPort.WriteTimeout = 500;
                serialPort.StopBits = StopBits.One;

                serialPort.Open(); 

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

                // Try this first:
                serialPort.WriteLine("! 0 200 200 210 1");
                serialPort.WriteLine("TEXT 4 0 30 40 Bonjour la Monde"); //Hola el Mundo --- Hallo die Welt
                serialPort.WriteLine("FORM");
                serialPort.WriteLine("PRINT");
                // or (if WriteLine does not include a carriage return and line feed):
                //              serialPort.Write("! 0 200 200 210 1\r\n");
                //              serialPort.Write("TEXT 4 0 30 40 Bonjour la Monde\r\n"); //Hola el Mundo --- Hallo die Welt
                //              serialPort.Write("FORM\r\n");
                //              serialPort.Write("PRINT\r\n");

                serialPort.Close();
            }

1 个答案:

答案 0 :(得分:0)

除了将冒号附加到“COM1”,因为在另一个SO帖子上显示ctacke是必要的,我还需要将WriteLine行替换为每行附加“\ r \ n”的Write行,以便它们现在是:

serialPort.Write("! 0 200 200 210 1\r\n");
serialPort.Write("TEXT 4 0 30 40 Bonjour la Monde\r\n"); //Hola el Mundo --- Hallo die Welt
serialPort.Write("FORM\r\n");
serialPort.Write("PRINT\r\n");

成功打印出“Bonjour la Monde”,虽然纸张太多(印刷线上下约一英里)。