Toutes les idées comment je peux mieux conduire une imprimante POS USB de C#. Les imprimantes POS sont généralement basées sur des ports série, TCP/IP ou USB. Je sais comment accomplir la série et TCP/IP mais n'ai aucune idée au sujet des communications par l'intermédiaire de l'USB dans C#. Je sais qu'il existe une couche disponible auprès de Microsoft appelée POS.NET, mais je veux essayer d'éviter cela. Toutes les idées ou les bibliothèques C# que les gens peuvent recommander seraient vraiment appréciées. MerciPiloter une imprimante POS via USB dans C#
Répondre
Vous devriez vraiment envisager d'utiliser les objets de service POS for .NET et OPOS ou .NET (Epson, par exemple, fournit les deux). POS pour .NET est conforme à la norme de l'industrie UnifiedPOS pour l'interfaçage avec ces dispositifs.
Si l'imprimante s'inscrit comme un périphérique d'interface utilisateur, vous pouvez P/INVOKE into the appropriate Win32 APIs. Voici les signatures:
[ 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);
Il y a un wrapper C# pour Win32 USP api de des gars de icsharpcode here, et j'ai vu au moins one autre référence à des choses USB en .Net.
Ce qui peut être difficile, c'est de savoir si l'imprimante a besoin d'OPOS pour fonctionner. J'ai travaillé sur un projet POS en .Net il y a quelques années, et d'après ce dont je me souviens, OPOS est à peu près la norme pour le matériel (et à l'époque, toutes les API OPOS utilisaient COM interop). Les appareils ont parfois aussi un protocole de communication propriétaire documenté, auquel cas vous devriez pouvoir utiliser cela pour parler à l'appareil en utilisant la bibliothèque USB.
Si vous avez déjà roulé votre propre code de contrôle d'imprimante, vous pouvez passer les commandes directement à l'imprimante en configurant l'imprimante en utilisant le pilote d'imprimante "Générique/Texte" sur le port USB. Ce pilote ne réinterprétera pas les codes de contrôle et essaiera de les imprimer, mais il les remettra à l'imprimante tel quel.
Ensuite, le port USB peut être utilisé comme n'importe quelle autre imprimante.
Cette approche a fonctionné pour moi sur un système de point de vente que j'ai développé.
- 1. Vérifiez la connexion à une imprimante POS connectée via COM
- 2. Comment programmer une imprimante POS en utilisant USB sur Visual Basic 6
- 3. Application DOS ancienne avec imprimante USB
- 4. Impression sur une imprimante USB avec Python sur un Mac
- 5. Quelle est la meilleure façon d'imprimer directement sur une imprimante, comme une imprimante POS, sur le Web?
- 6. Imprimante POS Epson - Spécification automatique de retour d'état
- 7. Configuration d'une imprimante POS à l'aide de POS.NET
- 8. Piloter DTR avec System.IO.Ports.SerialPort dans .NET
- 9. Envoi MIDI via USB via Arduino
- 10. Envoi d'un fichier générique/texte directement sur une imprimante matricielle Epson via un port USB en utilisant Java
- 11. Imprimante par défaut dans Unmanaged C++
- 12. Comment imprimer depuis une imprimante PPC (Windows Mobile) - USB, qui se connecte à lui?
- 13. Parler à une imprimante
- 14. Déterminer l'adresse IP d'une imprimante en C#
- 15. Simulation Plug-and-Play USB
- 16. Besoin d'un composant Commutateur contrôlé via le port USB
- 17. Interfaçage avec Compris POS
- 18. Able Commerce POS Data Merge
- 19. Scanner non reconnu par Microsoft POS
- 20. Surveillance d'une imprimante
- 21. Impression générique à l'aide d'un port USB
- 22. communiquer avec iphone via le port USB sur mac
- 23. Sortie Direct3D sur une imprimante/traceur
- 24. Comment simuler une imprimante lente dans Windows XP?
- 25. Essayer d'utiliser l'option "Utiliser une imprimante spécifique" dans Access 2007
- 26. Lecture du numéro de série du périphérique USB en C#
- 27. Détection d'un périphérique USB connecté en C
- 28. Comment puis-je installer une imprimante en utilisant .NET?
- 29. Utilisation de périphériques USB dans .NET
- 30. Comment définir une imprimante spécifique pour un rapport?
Lorsque vous connectez l'imprimante, elle tente d'installer elle-même et échoue car aucun pilote n'est présent. Il apparaît ensuite dans la section "Autres périphériques" du Gestionnaire de périphériques. – JDibble