Выбить денежный ящик с помощью контрольного кода

Я работаю с термопринтером Epson и денежным ящиком. Денежный ящик связан с принтером. Ссылка на http://keyhut.com/popopen.htm, код для выключения денежного ящика: 27 112. ,0,50,250. Я попытался отправить этот код на принтер, но ничего не происходит. Я использовал POS для .NET, и принтер зарегистрирован в SetupPos.

Вот мой код:

deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
m_Printer.Open();
m_Printer.Claim(1000);
m_Printer.DeviceEnabled = true;
//command = "ESC|p|0|25|251";
command = "\x1B|\x70|\x00|\x19|\xFB";
m_Printer.PrintImmediate(PrinterStation.Receipt, command);
//m_Printer.CutPaper(100);
m_Printer.DeviceEnabled = false;
m_Printer.Release();
m_Printer.Close();

Печатать текст можно, но код отправки не работает. Что я могу сделать? Спасибо.


person Danie    schedule 24.01.2018    source источник
comment
Нужны ли каналы в строке для библиотеки или что-то в этом роде?   -  person Sami Kuhmonen    schedule 24.01.2018


Ответы (2)


Спецификация POS for.NET(UnifiedPOS) не поддерживает открытие CashDrawer методом PrintNormal()/PrintImmediate() устройства POSPrinter.
Поскольку с устройством POSPrinter связано независимое устройство CashDrawer, откройте() соответствующее устройство. как CashDrawer и откройте ящик с помощью метода OpenDrawer().

Однако, в зависимости от поставщика, существует возможность поддержки такого использования, как у вас.
У меня нет информации о том, поддерживает ли EPSON POSPrinter такое использование или нет.
Спросите EPSON или вашего дистрибьютора, можете ли вы использовать такой способ.

Кроме того:
Вместо POS for.NET можно установить и использовать драйвер устройства в качестве обычного принтера Windows.
Некоторые поставщики предлагают драйвер принтера Windows для принтеров чеков и также поддерживает функции обрезки бумаги и открывания ящиков.
В EPSON он предоставляется под названием Advanced Printer Driver.

Спрашивающий, кажется, решил проблему, используя это.

Однако этот драйвер устройства часто используется исключительно с POS для .NET/OPOS/JavaPOS, и при печати необходимо использовать стандартный API печати Windows.

person kunif    schedule 24.01.2018

Третий код из кода открытия ящика ESC|p|0|25|251 для отправки на самом деле является символом для управления денежным ящиком 1 или 2, который использует «0» или «1». Символ 0 или 1 в таблице ASCII отображается в десятичное число 48 или 49. Поэтому вам нужно использовать шестнадцатеричный код x30 или x31, а не x00. Просто чтобы добавить больше информации, четвертый и пятый код - это время, когда сигнал включается или выключается, отправляя десятичное число (значение от 0 до 255) * 2 мс. Я надеюсь, что это решит проблему, если вы все еще хотите использовать код блокировки денежного ящика и подключить устройство к принтеру.

person Arif    schedule 31.05.2021