Можно ли с помощью Microsoft POS .NET "визуализировать" выходные данные на сервере и просто отправить байты клиенту для печати?

Используя Microsoft POS.NET с печатью чеков Epson, можно ли создать чек для печати на сервере (на сервере установлены драйверы POS.NET и Epson, но не подключен принтер), записав байты, которые должны были попасть на принтер в файл?

После этого мы хотели бы иметь возможность передавать их на клиентский компьютер, на котором установлен принтер, и все, что он делает, это передает байты на принтер.

Все, что у нас есть, это пример кода Epson, работающего на компьютере разработчика, я не вижу очевидного способа сделать "Печать в файл" или перехватить байты.

1 ответ

Решение

К сожалению для вас, OPOS не предлагает эту функциональность изначально. Наиболее близким из них является "Режим страницы", в котором вы устанавливаете чековый или чековый принтер OPOS в состояние "Режим страницы", а затем все ваши команды печати буферизуются внутри объекта службы. Затем вы запускаете команду OPOS pageModePrint(), чтобы отправить всю квитанцию ​​на принтер позднее. Но OPOS не предоставляет доступ к буферу, и поставщик может свободно реализовать его любым удобным для него способом (в том числе вообще не реализовывать возможности).

Чтобы решить вашу проблему, самое простое решение, которое я могу придумать, - это проверить ваш объект службы и посмотреть, поддерживает ли он сетевую печать. Возможно, объект службы уже способен печатать на подключенном к сети принтере или на другом компьютере, на котором размещен принтер. Поставщик может предложить доступ к буферу Page Mode через команды DirectIO. Поставщик вашего принтера может предложить их в качестве дополнительных (платных) функций или предложить вам написать их для вас. Если поставщик уже предлагает вариант платы связи Ethernet для вашего принтера, скорее всего, у него уже есть все, что вам нужно. Спрашивать не повредит.

Если нет, вы, безусловно, можете написать свой собственный объект службы, чтобы выполнить задачу буферизации данных и сделать их доступными для вашего приложения. Разумеется, невозможно вставить пользовательский объект службы в виде "клина" между общими элементами управления и предоставленным поставщиком объектом обслуживания и разрешить настраиваемое управление с помощью метода DirectIO(). Однажды я сделал именно это, чтобы добавить функциональность буфера сканера, но я никогда не делал этого для чего-то более сложного, чем принтер.

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