对于项目的需要,我想在特定位置打印LPT1,这将在点阵打印机中打印文档,我应该在他们应该去的地方打印值。我真的很讨厌回去,我不知道从哪里开始。 Internet没有关于使用C#在LPT端口中打印的具体信息,尤其是在打印时如何在特定位置发送值。有什么好的例子吗?这个教程?将是一个救生员。
答案 0 :(得分:5)
我可以建议一件事让您的生活更轻松,安装通用文本打印机驱动程序(这是标准配置)并将其设置为LPT1端口。然后你可以简单地打开'LPT1'并发送escape code序列来指定字体类型(粗体/斜体),强调,字体间距等。我不知道是否需要资源。但我想它会是这样的:
System.IO.StreamWriter sr = new System.IO.StreamWriter(@"\\.\LPT1"); sr.Write(0x1b); sr.Write('k'); sr.Write('1'); sr.Write("Hello"); // print in Sans Serif sr.WriteLine(); sr.Flush(); sr.Close();
资源:
已编辑@ 2017-07-12:已更新并行端口链接以使用Wayback存档计算机。
答案 1 :(得分:3)
有问题的打印机是否有Windows打印驱动程序?如果是这样,它是否在LPT1上打印并不重要,它只是使用标准的打印材料。
答案 2 :(得分:1)
如果您的打印机具有Windows驱动程序,则可以使用标准打印技术。请参阅Petzold的书Programming Microsoft Windows with C#以获得一个好的介绍。
答案 3 :(得分:0)
嘿,我在2019年才有了点矩阵打印机,您仍然可以以5英镑的价格购买色带。
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
public class ParallelPrinter
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern SafeFileHandle CreateFile(string lpFileName, FileAccess dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, FileMode dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
public static void Print(string text)
{
using (SafeFileHandle fileHandle = CreateFile("LPT1:", FileAccess.Write, 0, IntPtr.Zero, FileMode.OpenOrCreate, 0, IntPtr.Zero))
{
if (fileHandle.IsInvalid == true)
throw new ApplicationException("Printer is Invalid");
using (FileStream stream = new FileStream(fileHandle, FileAccess.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.ASCII))
{
writer.Write(text);
}
}
}
}
}
没有驱动程序,您只需要并行端口,如果没有并行驱动程序,则可以获得PCI-e卡。