Я разрабатываю POS, используя c # с WPF.Мне нужно проверить, открыт ли денежный ящик или нет, чтобы сообщить пользователю, что его нужно закрыть перед следующей продажей.
Мой денежный ящик - это dynapos, подключенный к чековому принтеру ECLine (у меня не установлены драйверы, я использую только шаблоны из Windows), этот принтер подключен через USB к ПК.Пока я могу печатать с помощью RawPrinterHelper и открывать кассовый аппарат с помощью:
byte[] codeOpenCashDrawer = new byte[] { 27, 112, 48, 55, 121 };
IntPtr pUnmanagedBytes = new IntPtr(0);
pUnmanagedBytes = Marshal.AllocCoTaskMem(5);
Marshal.Copy(codeOpenCashDrawer, 0, pUnmanagedBytes, 5);
RawPrinterHelper.SendBytesToPrinter(stringPrinterName, pUnmanagedBytes, 5);
Marshal.FreeCoTaskMem(pUnmanagedBytes);
Таким же образом я могу открыть кассовый ящик, я надеялся получить статусоб этом, отправив несколько байтов.Я нашел это решение, в котором говорится:
Чтобы получить статус ящика, мне нужно использовать DLE EOT n
Проблема в том, чтоЯ не могу узнать, являются ли байты хорошими, поскольку я не могу получить ответ от RawPrinterHelper
при использовании метода SendBytesToPrinter
.
Вопросы:
1) Есть ли способ получить этот статус с помощью RawPrinterHelper?
2) Если байты, которые я отправляю, не являются правильными, как я могу определить, какие из них являются правильными?
3) Нужно ли устанавливать драйвер для принтера?Я читал о некоторых людях, которые это делают, но я бы не хотел этого делать, потому что в каждом месте, где установлен мой POS, установлено разное оборудование.