Alguna idea de cómo puedo manejar mejor una impresora POS USB desde C#. Las impresoras POS suelen ser de serie, TCP/IP o basadas en USB. Sé cómo lograr serial y TCP/IP pero no tengo idea acerca de las comunicaciones a través de USB en C#. Sé que hay una capa disponible de Microsoft llamada POS.NET, pero quiero intentar evitar usar esto. Cualquier idea o biblioteca de C# que la gente pueda recomendar sería muy apreciada. GraciasConduzca una impresora POS a través de USB en C#
Respuesta
Debería considerar usar POS para .NET y objetos de servicio .NET o OPOS (Epson, por ejemplo, proporciona ambos). POS para .NET cumple con el estándar de la industria UnifiedPOS para interactuar con estos dispositivos.
Si la impresora se registra como Dispositivo de interfaz humana, puede P/INVOKE into the appropriate Win32 APIs. Aquí están las firmas:
[ 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);
Hay un envoltorio C# para Win32 USP API s chicos ICSharpCode here, y he visto otra al menos one referencia a la materia USB en .Net.
Lo que puede ser complicado es si la impresora requiere OPOS para funcionar o no. Hice un poco de trabajo en un proyecto POS en .Net hace unos años, y por lo que recuerdo, OPOS es prácticamente el estándar para el lado del hardware de las cosas (y en ese momento todas las API OPOS utilizaban la interoperabilidad COM). Los dispositivos a veces también tienen un protocolo de comunicaciones patentado documentado, en cuyo caso debe poder utilizarlo para hablar con el dispositivo utilizando la biblioteca USB.
Si ya ha hecho rodar su propio código de control de la impresora, puede pasar los comandos directamente a la impresora configurando la impresora utilizando el controlador de impresora "Genérico/Texto" en el puerto USB. Ese controlador no volverá a interpretar los códigos de control e intentará imprimirlos, sino que simplemente los entregará a la impresora tal como está.
A continuación, el puerto USB se puede utilizar como cualquier otra impresora.
Este enfoque funcionó para mí en un sistema POS que desarrollé.
- 1. ¿Cuál es la mejor manera de imprimir directamente en una impresora, como una impresora POS, a través de la web?
- 2. Enviando datos a la impresora USB en C#?
- 3. Papel de alimentación en la impresora POS C#
- 4. Android ESC/POS Impresión a través de WiFi
- 5. Imprimir en una impresora USB con Python en una Mac
- 6. Facturación de extranjeros a través de la impresora POS e impresión de imágenes
- 7. Enviar raw ZPL a la impresora Zebra a través de USB
- 8. aplicación heredada de DOS con impresora USB
- 9. ¿Cómo conectar una impresora de red a través de Android?
- 10. el envío de datos en bruto a través de USB en Linux
- 11. ¿Está conectado a una impresora Brother PTouch?
- 12. Enviar un trabajo de impresión a una impresora USB utilizando Python
- 13. Controle una luz USB a través del software
- 14. Enviar documento a la impresora con C#
- 15. Enviar comandos ESC a una impresora en C#
- 16. Comunicación de OS X a iOS a través de USB?
- 17. enviar mensajes MIDI a través de USB en Android
- 18. enviar datos de android a PC a través de USB
- 19. Máquina de desarrollo de acceso localhost a través de usb
- 20. Recopilación de datos con Android a través de USB
- 21. C# SerialPort - emular el teclado pos
- 22. Reconocimiento de voz a través de un puerto USB
- 23. ¿Hay alguna forma de conectar un dispositivo Android a una impresora externa a través de Bluetooth?
- 24. Controlar el interruptor de relé simple a través de USB
- 25. ¿Puedo obtener el icono asociado a una impresora instalada a través de .Net?
- 26. etiquetado POS en alemán
- 27. ¿Cómo puedo leer archivos de una cámara conectada a través del usb
- 28. ¿Hay una impresora PDF de código abierto escrita en C++?
- 29. ¿Cómo me conecto a una cámara web USB en .NET?
- 30. ¿Cómo enviar archivos pcl a la impresora en Windows 7?
Cuando conecta la impresora intenta instalarse y falla porque no hay controladores presentes. Luego aparece en la sección "Otros dispositivos" en el Administrador de dispositivos. – JDibble