Frage

Irgendwelche Ideen, wie ich am besten einen USB-POS-Drucker von c # fahren kann. POS-Drucker sind in der Regel seriell, TCP / IP oder USB basiert. Ich weiß, wie serielle und TCP / IP zu erreichen, aber haben keine Ahnung von Kommunikation über USB in C #. Ich weiß, dass es eine Schicht von Microsoft erhältlich genannt POS.NET, aber ich will versuchen zu vermeiden und diese verwenden. Irgendwelche Ideen oder alle C # -Bibliotheken, die Menschen empfehlen kann würden wirklich geschätzt. Dank

War es hilfreich?

Lösung

Sie sollten wirklich überlegen POS mit für .NET und OPOS oder .NET-Dienstobjekte (Epson, zum Beispiel beide zur Verfügung stellt). POS for .NET entspricht der UnifiedPOS Industriestandard mit diesen Geräten für die Anbindung.

Andere Tipps

Wenn der Drucker registriert sich als Human Interface Device, können Sie P / Invoke in den entsprechenden Win32-APIs . Hier sind die Unterschriften:

    [ 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 );

Es ist ein C # Wrapper für Win32 USP api aus den ICSharpCode Jungs hier und ich habe zumindest gesehen ein anderer Verweis auf USB Sachen in .Net.

Was schwierig sein kann, ist, ob der Drucker OPOS- benötigt, um zu funktionieren. Ich habe einige Arbeit an einem POS-Projekt in .NET ein paar Jahre zurück, und von dem, was ich OPOS- erinnern ist so ziemlich der Standard für die Hardware-Seite der Dinge (Und zu der Zeit alle OPOS- APIs COM-Interop verwendet). Die Geräte manchmal auch ein dokumentiertes proprietäres Kommunikationsprotokoll haben, in diesem Fall sollten Sie die in der Lage sein zu verwenden, um das Gerät mit der USB-Bibliothek zu sprechen.

Wenn Sie bereits gerollt eigenen Drucker-Steuercode dann können Sie die Befehle direkt durch an den Drucker übergeben, indem Sie den Drucker mit den „Generic / Text“ Druckertreiber auf dem USB-Port einrichten. Dass Fahrer nicht den Steuercodes neu interpretieren und versuchen, sie zu drucken, aber es wird sie nur an den Drucker übergibt ab, als sie ist.

Dann kann der USB-Anschluss verwendet werden, wie jeder andere Drucker.

Dieser Ansatz ist für mich an einem POS-System, das ich entwickeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top