Принтер com0com перехватывает opos офлайн

Мы пытаемся перехватить данные между pos и принтером.

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

экземпляр гипертерминала на каждой стороне конечных точек com0com связывается друг с другом.

Я никогда не знал, что есть способ определить, действительно ли оборудование подключено к последовательному порту. Обычно я пишу на com-порт независимо от того, прослушивается ли устройство. Я знаю, что в почтовом ящике опос используется как основной способ связи с принтером. Какое событие запускается, чтобы уведомить приложение pos о том, что принтер отключен? Как оборудование определяет, подключено ли устройство? Есть ли способ обойти это событие при использовании com0com?

1 ответ

Решение

OPOS выполняет три этапа: Open(), ClaimDevice() и Enable. Вызов Open () приведет к тому, что общий управляющий объект OPOS (OPOS CCO) создаст предоставленный поставщиком специфический для устройства сервисный объект (SO), а затем вызовет метод Open () для SO. Это инициализирует программное обеспечение, но, вероятно, не будет пытаться общаться с устройством в это время.

ClaimDevice () договаривается с SO, чтобы убедиться, что устройство является общим и доступным для приложения. Именно в это время устройство может быть сообщено в автономном режиме. ClaimDevice() вызовет исключение с ResultCode, указывающим OPOS_E_OFFLINE.

Если для параметра "Включить" задано значение "истина" или выполнение операций печати может вызвать сбой вызова, если устройство находится в автономном режиме. Например, кто-то может отключить принтер во время печати.

SO отвечает за согласование и связь с устройством. Поставляемый поставщиком установочный пакет OPOS обычно устанавливает и настраивает SO для вас. Но вы должны убедиться, что SO правильно настроен для связи с правильным портом и устройством. Если он не настроен должным образом, вы получите сообщение об ошибке устройства в автономном режиме при вызове ClaimDevice ().

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