Я пытаюсь распечатать сырые данные ascii на термопринтер. Я делаю это, используя этот пример кода: http://support.microsoft.com/kb/322091, но мой принтер печатает всегда только один символ, и это не так, пока я не нажму кнопку подачи формы. Если я что-то распечатаю с помощью блокнота, принтер автоматически выполнит подачу формы, но без печати текста.
Принтер подключен через USB через адаптер lpt2usb, а в Windows 7 используется драйвер «Общий -> Общий / Только текст».
Кто-нибудь знает, что происходит не так? Как можно напечатать некоторые слова и сделать несколько каналов? Есть ли какие-нибудь контрольные символы, которые я должен отправить? И если да, то как мне их отправить?
Изменить 14.04.2010 21: 51
Мой код (C #) выглядит так:
PrinterSettings s = new PrinterSettings();
s.PrinterName = "Generic / Text Only";
RawPrinterHelper.SendStringToPrinter(s.PrinterName, "Test");
Этот код будет возвращать букву "T" после того, как я нажал кнопку подачи формы (эта маленькая черная кнопка здесь: swissmania.ch/images/935-151.jpg - извините, недостаточно репутации для двух гиперссылок)
Изменить 15.04.2010 16: 56
Я сейчас использую форму кода здесь: c-sharpcorner.com/UploadFile/johnodonell/PrintingDirectlytothePrinter11222005001207AM/PrintingDirectlytothePrinter.aspx
Я немного изменил его, чтобы использовать следующий код:
byte[] toSend;
// 10 = line feed
// 13 carriage return/form feed
toSend = new byte[1] { 13 };
PrintDirect.WritePrinter(lhPrinter, toSend, toSend.Length, ref pcWritten);
Запуск этого кода имеет тот же эффект, что и нажатие кнопки подачи формы, он работает отлично!
Но такой код все еще не работает:
byte[] toSend;
// 10 = line feed
// 13 carriage return/form feed
toSend = new byte[2] { 66, 67 };
PrintDirect.WritePrinter(lhPrinter, toSend, toSend.Length, ref pcWritten);
Это выведет только «B», но я ожидаю, что «BC» и после запуска любого кода, я должен повторно подключить кабель USB, чтобы заставить его работать agian. Есть идеи?