Любые идеи, как я могу лучше всего управлять USB-POS-принтером из C#. Принтеры POS обычно являются последовательными, TCP/IP или USB. Я знаю, как выполнить серийный и TCP/IP, но понятия не имею о связи через USB в C#. Я знаю, что есть слой, доступный от Microsoft под названием POS.NET, но я хочу попытаться избежать этого. Любые идеи или любые библиотеки C#, которые люди могут рекомендовать, будут действительно оценены. СпасибоПривод POS-принтера через USB в C#
ответ
Вы действительно должны рассмотреть возможность использования объектов POS для .NET и OPOS или .NET (например, Epson). POS для .NET соответствует отраслевому стандарту UnifiedPOS для взаимодействия с этими устройствами.
Если принтер зарегистрирован как устройство интерфейса пользователя, вы можете P/INVOKE into the appropriate Win32 APIs. Вот подписи:
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_FlushQueue(SafeFileHandle HidDeviceObject);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_FreePreparsedData(ref IntPtr PreparsedData);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_GetAttributes( SafeFileHandle HidDeviceObject
, ref HIDD_ATTRIBUTES Attributes);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_GetFeature( SafeFileHandle HidDeviceObject
, ref Byte lpReportBuffer
, Int32 ReportBufferLength);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_GetInputReport(SafeFileHandle HidDeviceObject
,ref Byte lpReportBuffer
,Int32 ReportBufferLength);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern void HidD_GetHidGuid(ref System.Guid HidGuid);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_GetNumInputBuffers( SafeFileHandle HidDeviceObject
, ref Int32 NumberBuffers);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_GetPreparsedData(SafeFileHandle HidDeviceObject
,ref IntPtr PreparsedData);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_SetFeature( SafeFileHandle HidDeviceObject
, ref Byte lpReportBuffer
, Int32 ReportBufferLength);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_SetNumInputBuffers(SafeFileHandle HidDeviceObject
,Int32 NumberBuffers);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Boolean
HidD_SetOutputReport(SafeFileHandle HidDeviceObject
,ref Byte lpReportBuffer
,Int32 ReportBufferLength);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Int32
HidP_GetCaps(IntPtr PreparsedData, ref HIDP_CAPS Capabilities);
[ DllImport("hid.dll", SetLastError=true) ]
public static extern Int32
HidP_GetValueCaps( Int16 ReportType
, ref Byte ValueCaps
, ref Int16 ValueCapsLength
, IntPtr PreparsedData);
Существует С # обертки для Win32 API, USP из icsharpcode парней here, и я видел, по крайней мере, one другой ссылки на USB материал в .Net.
Что может быть сложно, нужен ли принтер OPOS для того, чтобы функционировать. Я немного поработал над проектом POS в .Net несколько лет назад, и из того, что я помню, OPOS в значительной степени является стандартом для аппаратной части вещей (и в то время, когда все API OPOS использовали COM-взаимодействие). У устройств иногда также есть документированный протокол проприетарной связи, и в этом случае вы должны иметь возможность использовать это, чтобы разговаривать с устройством, используя библиотеку USB.
Если вы уже свернули свой собственный код управления принтером, вы можете передать команды прямо в принтер, установив принтер с помощью драйвера принтера «Общий/текст» на USB-порту. Этот драйвер не будет повторно интерпретировать коды управления и попытаться распечатать их, но он просто передаст их на принтер как есть.
Затем порт USB можно использовать точно так же как любой другой принтер.
Этот подход работал для меня в POS-системе, которую я разработал.
- 1. Привод Outlook через Excel
- 2. Привод Wordpress через внешний RSS
- 3. Отправка команд принтера через USB в C#
- 4. Как определить, является ли привод внешним накопителем
- 5. Общайтесь с NXT через USB с C++
- 6. Обнаружение USB в C++
- 7. Проверьте состояние отладки USB через соединение USB
- 8. Проверьте, может ли привод быть удален
- 9. Аудиовход через USB в Android
- 10. Передача данных через USB
- 11. Итерация через USB-накопители
- 12. OBD-связь через USB
- 13. Управление qx1 через usb
- 14. APDU через USB-соединение
- 15. Android Программирование через USB
- 16. C, C++ пишут на параллельном порту через USB-адаптер (LINUX)
- 17. USB связи в C#
- 18. FindBin идентификация неправильно привод
- 19. Установка приложения QT на Windows C Привод
- 20. буквы Снимите привод через пакетные или VBS сценариев
- 21. Можно ли записывать звук через USB-камеру в объективе c?
- 22. USB-передача данных на внешний USB 3
- 23. настроить Android WIFI через USB
- 24. Ввод аналоговых данных через USB
- 25. Подключение сверстников через USB OTG
- 26. Atmega328p отправка данных через USB
- 27. Включите АБР удаленно через USB
- 28. Невозможно использовать ADB через USB
- 29. Шаговые двигатели управления через USB
- 30. Аналоговый сигнал через провода USB
При подключении принтера он пытается установить себя и не работает, потому что нет драйверов. Затем он появляется в разделе «Другие устройства» в диспетчере устройств. – JDibble 2008-10-09 15:15:33