Печать в матричном многоточии (параллельный порт) поверх 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, если у вас ее нет.

Другие вопросы по тегам