Подключиться к USB-принтеру чеков из WPF / C #

Я застрял в поставленной задаче. Я пытаюсь подключиться к USB-принтеру квитанций и распечатать его, но мне это пока не удалось. Компания купила киоск-стенд, в основном компьютер на базе Windows с сенсорным экраном и принтером, в Китае. Я создаю приложение WPF (C #) для этого киоска, которое должно иметь возможность печатать квитанции.

К киоску прилагался инструмент для тестирования принтера  введите описание изображения здесь Что нормально работает на самой подставке для киоска, но когда я подключаю принтер к своему персональному компьютеру, он не работает.

Принтер отображается в разделе «Устройства и принтеры» как «Не указано» как на киоске, так и на моем персональном компьютере с именем «JRSVC Printer»  введите описание изображения здесь

И на киоске, и на моем компьютере принтер, похоже, использует драйвер под названием "usbprint.sys" введите описание изображения здесь

Я попытался подключиться к принтеру с C #:  введите описание изображения здесь Но я могу найти только принтеры, которые не являются" Неуказанными ".

Так что я очень зациклился на том, как я могу подключаться и печатать с помощью этого USB-принтера. «Инструмент тестирования печати» может легко печатать с самого киоска (но не с моего собственного компьютера?), Поэтому он работает, даже если он находится в разделе «Не указано» на киоске.

Физический принтер выглядит так:  введите описание изображения здесь

А вот ссылка на программное обеспечение, поставляемое с киоском: http://www.filedropper.com/chinaprintersoftware

Если бы кто-то мог указать мне в правильном направлении, о том, как я могу подключаться и печатать из приложения WPF (C #), я буду очень признателен!


person Rasmus Pedersen    schedule 05.02.2019    source источник
comment
Можете ли вы распечатать на нем из окон? Как из блокнота?   -  person Andrew    schedule 05.02.2019
comment
Я могу печатать с самого стенда киоска с помощью программного обеспечения для тестирования печати, показанного на первом изображении. Я не могу печатать из Блокнота, так как принтер не отображается в списке принтеров, которые Блокнот может использовать   -  person Rasmus Pedersen    schedule 05.02.2019
comment
Похоже на проблемы с драйверами ...   -  person Nawed Nabi Zada    schedule 05.02.2019
comment
вы пробовали отправлять последовательные данные на принтер через usb? это может быть не принтер с драйвером, а серийный, разве у вас нет руководства или чего-то еще, к чему можно обратиться?   -  person Denis Schaf    schedule 05.02.2019
comment
Никакого руководства или домашней страницы производителя, только китайские документы и инструмент для тестирования, на которые все ссылки указаны выше. Нет, я не пробовал отправлять последовательные данные на принтер, как мне это сделать?   -  person Rasmus Pedersen    schedule 06.02.2019


Ответы (1)


Насколько я понимаю, usbprint не является «обычным» драйвером принтера в том смысле, с которым знакомо большинство людей, это драйвер низкого уровня, используемый для непосредственного взаимодействия с оборудованием. Это означает, что вы не можете печатать обычным способом через интерфейс GDI, вы не получаете большинства преимуществ печати Windows и не можете печатать из обычного приложения Windows.

Первое, что нужно сделать, это взглянуть на документация USBPRINT, а именно части на как печатать. Если бы я делал это сам, я бы создал быстрое приложение на C ++, чтобы заставить принтер работать, а затем либо обернул бы его в управляемую библиотеку C ++, которую может использовать мое приложение WPF, либо, желательно, напрямую через DLLImport.

Что касается того, какие данные отправлять, это зависит от принтера. Существует множество стандартов, поэтому вам придется либо получить для него документацию, либо посмотреть, что отправляют демонстрационные приложения. Учитывая, сколько лет этой штуке, очевидно, она может поддерживать обычные текстовые и управляющие последовательности LPT1.

Если это вообще возможно, вы все равно должны попытаться найти документацию к нему, хотя бы по той или иной причине, кроме как посмотреть, есть ли у него какие-либо параметры конфигурации. Я потратил много лет на разработку программного обеспечения для киосков WPF для различных секторов, и большинство принтеров, которые я видел, поддерживают, по крайней мере, некоторую возможность последовательной эмуляции. Фактически, прежде чем делать что-либо еще, вы, вероятно, должны проверить свой диспетчер устройств, в частности раздел «Порты (COM и LPT)». Если он там появится, то ваша работа станет намного проще.

ОБНОВЛЕНИЕ: на самом деле я только что пошел и посмотрел документацию, вы уверены, что эта штука не отображается как последовательный порт на самом киоске? Потому что из документации похоже, что он его поддерживает:

введите описание изображения здесь

person Mark Feldman    schedule 05.02.2019
comment
Спасибо за ответ! Нет документации, у производителя нет домашней страницы, все, что я получил, это файлы, на которые я ссылался выше. Принтер ДЕЙСТВИТЕЛЬНО отображается в Диспетчере устройств - ›COM и LPT, вот скриншот. Помоги мне? -Надеюсь, потому что опыта работы с C ++ у меня нет - person Rasmus Pedersen; 06.02.2019
comment
Хорошо, на вашем снимке экрана показано 4 com-порта и 1 lpt-порт. Какой из них исчезает, когда вы отключаете принтер? - person Mark Feldman; 06.02.2019
comment
Я предполагал, что порт принтера (LPT1) будет принтером, но он не исчезает / не появляется снова при подключении и отключении: / Но тот, который называется Поддержка печати USB в контроллерах универсальной последовательной шины, есть. Снимок экрана - person Rasmus Pedersen; 06.02.2019
comment
Хорошо, в этом случае я подозреваю, что вам придется либо выяснить, как включить последовательную эмуляцию из их служебной программы настройки (при условии, что она ее поддерживает), либо попытаться найти какой-либо существующий код C #, который позволит вам взаимодействовать с этими функциями USBPRINT. В качестве альтернативы, перенос интерфейса в него самостоятельно не должен занимать больше получаса или около того, на этой странице показано, как это делается. - person Mark Feldman; 07.02.2019
comment
Опять же, это все домыслы. Эти устройства могут быть немного сложными для работы, когда у вас нет надлежащей документации, иногда мне приходится пробовать различные подходы, чтобы выяснить, как работает конкретное устройство. Если бы я был на вашем месте, я бы также напрямую связался с icod, у них часто бывают ресурсы, не входящие в основной пакет, или, возможно, даже свяжет вас с инженером, который говорит по-английски. - person Mark Feldman; 07.02.2019