Печать в матричном многоточии (параллельный порт) поверх C#
Для нужд проекта, я хочу распечатать на LPT1 в определенных местах, это будет печатать документ на матричном принтере, где я должен печатать значения в местах, куда они должны идти. Я действительно ненавижу возвращаться, и я понятия не имею, с чего начать. В Интернете нет конкретной информации о печати в порту LPT с помощью C# и особенно о том, как отправлять значения в определенные места во время печати. Есть ли хороший пример? учебник для этого? был бы спасителем жизни.
3 ответа
Я мог бы предложить одну вещь, чтобы сделать вашу жизнь проще, установить универсальный драйвер текстового принтера (это входит в стандартную комплектацию) и установить его на порт LPT1. Затем вы можете просто открыть "LPT1" и отправить последовательности escape-кода, чтобы указать тип шрифта (полужирный / курсив), выделенный, шаг шрифта и т. Д. Я не знаю, потребуются ли ресурсы. Но я бы предположил, что это будет что-то вроде этого:
System.IO.StreamWriter sr = new System.IO.StreamWriter (@ "\\. \ LPT1"); sr.Write (0x1b); sr.Write ('к'); sr.Write('1'); sr.Write("Hello"); // печать без засечек sr.WriteLine(); sr.Flush(); sr.Close();
Ресурсы:
- Печать на принтере Zebra с использованием VB.NET (это можно легко перевести на C# или скомпилировать в DLL и ссылаться на него в вашем проекте C#)
- Статья на MSDN о том, как взаимодействовать с LPT1
- Вот обширный список информации, относящейся к параллельному порту. (смотрите далее в разделе "Инструменты программирования для ввода-вывода портов и прерываний"), обсуждая использование этой библиотеки DLL, называемой inpout32.
- Вот еще одна статья на MSDN, в которой показано, как выполнять необработанную печать.
Отредактировано @ 2017-07-12: обновлена ссылка на параллельный порт для использования Wayback Archive Machine.
Разве у принтера нет драйвера печати Windows? Если это так, то не имеет значения, печатает ли он по LPT1 или нет, он просто использует стандартный материал Print.
Подобный вопрос: матричная печать в C#?
Если на вашем принтере установлены драйверы для Windows, вы можете использовать стандартные методы печати. См. Книгу Петцольда " Программирование Microsoft Windows с помощью C#" для хорошего вступления.
Эй, я только что получил матричный принтер в 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, если у вас ее нет.