如何使用OpenNETCF.IO.Ports写入Zebra QL220?

时间:2013-02-06 17:19:23

标签: c# serial-port compact-framework windows-ce zebra-printers

下面的“SerialPort”来自OpenNETCF.IO.Ports。

对于打印到带式打印机(Zebra QL220),这是第一次通过/半修改的猜测是否有意义;那是不是一个不错的起点呢?

using (SerialPort serialPort = new SerialPort()) 
{
    string someString = "Bla";
    //serialPort.BaudRate = // I don't know what to put here yet, assuming this is needed
    //serialPort.DataBits = // " "
    //serialPort.Parity = // " "
    //serialPort.StopBits = // " "
    serialPort.PortName = "COM1"; // Is this what it wants?

    serialPort.Open();

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

    serialPort.Write(" ! U1 setvar \"device.languages\" \"line_print\"\r\n");
    serialPort.Write(" ! U SETLP 5 1 46\r\nPAGE-WIDTH 480\r\nSETBOLD 2\r\nPRINT\r\n");          
    serialPort.Write(" ! U1 CENTER\r\n"+someString"\r\n! U1 SETBOLD 0\r\n");
    serialPort.Write(" ! U1 CENTER\r\n");
    serialPort.Write(" ! U1 SETLP 0 2 24");

    serialPort.Close();
}

你可能会说,“你为什么不尝试看看?”但目前,至少,这是一个长期参与的过程,因为我无法在部署“设备”或模拟器的XP模式VM中运行我的应用程序(如果感兴趣,请参阅How can I run my Windows CE project from within Visual Studio (2003)?);我需要做的是将二进制文件复制到掌上电脑以测试任何修改过的代码;所以,我宁愿在某种程度上确定它会以某种方式运作,然后才能完成这个过程。

1 个答案:

答案 0 :(得分:1)

是的,这大致是你想要做的。您需要检查打印机docos,了解需要哪些通信设置。它通常是19200,N,8,1。对于某些打印机,您需要调整发送数据的速度。可以快速发送数据,超出打印机上的串行数据缓冲区。我记得,例如,每发送512个字节必须添加一个小延迟,否则打印流的尾端会丢失。虽然不确定打印机型号,但这只是值得注意的事情。