1

下面的“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 Mode VM 中的部署“设备”或模拟器上运行我的应用程序(请参阅如何从 Visual 中运行我的 Windows CE 项目工作室(2003)?如果有兴趣);我需要做的是将二进制文件复制到手持设备以测试任何修改过的代码;所以,我宁愿在经历那个繁琐的过程之前有点确定它会以某种方式工作。

4

1 回答 1

1

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

于 2013-02-07T13:00:42.763 回答