如何在热敏打印机Datecs LP-50 H上格式化和发送打印帐单项目的命令?

时间:2015-10-31 20:33:47

标签: c# wpf printing serial-port thermal-printer

我的打印机通过串行端口(COM3,9600)连接,现在我想打印一些文本。我已经尝试过在网上找到的所有代码,主要是以epson打印机命名,但它们都没有为我工作。

我只想在Button_click事件上向打印机发送消息。

 private void Button_Click(object sender, RoutedEventArgs e)
    {
        if (!serialPort.IsOpen)
            serialPort.Open();
        serialPort.Write(Message());
    }

简单的测试信息(以及我需要帮助的地方):

private String Message() {
    char[] init = new char[] { (char)0x1b, '@' };
    String msg = "";
    foreach (char c in init)
        msg += c;

       msg+="Hello World";
    return msg;
}

我还有打印机用户手册,伪命令:

LPRINT “0123456789012345678901”; 
LPRINT CHR$ (&HA); 
LPRINT CHR$ (&H9) + “AAA”; 
LPRINT CHR$ (&H9) + “BBB”; 
LPRINT CHR$ (&HA); 
LPRINT CHR$ (&H1B) + “D”; 
LPRINT CHR$ (3) + CHR$ (7) + CHR$ (14) + CHR$ (0); 
LPRINT CHR$ (&H9) + “AAA”; 
LPRINT CHR$ (&H9) + “BBB”; 
LPRINT CHR$ (&H9) + “CCC” + CHR$ (&HA);

如何将其转换为C#并在此伪命令中缺少某些内容?我在这里需要帮助来正确定义我的Message()方法并打印文本。

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法。 Datecs具有此类打印机的Windows驱动程序,因此打印机可用作常规打印机。没有搞乱com端口和它的参数,只需发送常规格式化的字符串进行打印。这是打印String

的方法
public void PrintText(StringBuilder s, String PrinterName)
    {
        PrintDocument p = new PrintDocument();
        p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
        {
            e1.Graphics.DrawString(s.ToString(), new Font("Times New Roman", 11), new SolidBrush(System.Drawing.Color.Black), new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));

        };
        try
        {
            p.PrinterSettings.PrinterName = PrinterName;
            p.Print();
        }
        catch (Exception ex)
        {
            throw new Exception("Exception Occured While Printing", ex);
        }
    }

需要此方法来添加引用:

System.Drawing

并在顶部添加使用陈述

using System.Drawing;