我的打印机通过串行端口(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()方法并打印文本。
答案 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;