سؤال

وأي أفكار كيف يمكن دفع أفضل طابعة USB POS من ج #. طابعات POS وعادة ما تكون المسلسل، TCP / IP أو USB القائمة. أنا أعرف كيف لإنجاز المسلسل و TCP / IP لكن ليس لديهم فكرة عن الاتصالات عبر USB في C #. وأنا أعلم أن هناك طبقة من Microsoft دعا POS.NET، ولكن كنت أريد أن أحاول وتجنب استخدام هذا. ومن شأن أي أفكار أو أي # مكتبات C التي يمكن للناس أن نوصي موضع تقدير حقا. بفضل

هل كانت مفيدة؟

المحلول

ويجب عليك أن تنظر حقا باستخدام POS لكائنات خدمة .NET وOPOS أو صافي (إبسون، على سبيل المثال يوفر كلا). POS ل. NET يتوافق مع معيار الصناعة UnifiedPOS للتفاعل مع هذه الأجهزة.

نصائح أخرى

إذا الطابعة تسجل نفسها على أنها جهاز واجهة الإنسان، يمكنك P / استدعاء إلى المناسبة Win32 واجهات برمجة التطبيقات . وهنا التوقيعات:

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

وهناك C # المجمع ل Win32 USP المعهد من الرجال icsharpcode هنا ، و رأيت ما لا يقل عن حساب إشارة البعض ل الاشياء USB في صافي.

وماذا قد تكون خادعة هو ما إذا كان أو لم يكن الطابعة تتطلب OPOS لكي يعمل. فعلت بعض العمل في مشروع POS في صافي قبل بضع سنوات، ومنها ما أتذكر OPOS هو الى حد كبير مستوى للجانب الأجهزة من الأشياء (وفي الوقت كل واجهات برمجة التطبيقات OPOS استخدمت إمكانية التشغيل المتداخل COM). الأجهزة أحيانا يكون أيضا على بروتوكول الاتصالات الملكية موثقة، وفي هذه الحالة يجب أن تكون قادرة على الاستفادة من ذلك لاجراء محادثات مع الجهاز باستخدام مكتبة USB.

إذا كنت قد توالت بالفعل الخاصة رمز التحكم الطابعة ثم يمكنك تمرير الأوامر مباشرة من خلال الطابعة عن طريق إعداد الطابعة باستخدام "عام نص /" برنامج تشغيل الطابعة على منفذ USB. وهذا السائق لا إعادة تفسير رموز التحكم ومحاولة طباعتها، ولكنها ستكون مجرد تسليم أجبرتها على الفرار إلى الطابعة كما هو.

وبعد ذلك منفذ USB يمكن استخدامها تماما مثل أي طابعة أخرى.

ونجح هذا النهج بالنسبة لي على نظام POS أنني المتقدمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top