任何想法如何我可以最好地驅動從C#的USB POS打印機。 POS打印機通常是基於串行,TCP/IP或USB的。 我知道如何完成串行和TCP/IP,但不知道通過USB在C#中的通信。 我知道微軟有一個名爲POS.NET的圖層,但我想盡量避免使用它。 任何想法或任何C#圖書館,人們可以建議將非常感激。謝謝駕駛一臺POS打印機通過USB在c#
5
A
回答
4
您應該考慮使用POS for .NET和OPOS或.NET服務對象(例如Epson提供)。 POS for .NET符合與這些設備接口的UnifiedPOS行業標準。
2
如果打印機自己註冊爲人機界面設備,您可以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);
1
1
如果您已經推出了自己的打印機控制代碼,則可以通過使用USB端口上的「Generic/Text」打印機驅動程序設置打印機,直接將命令傳遞給打印機。該驅動程序不會重新解釋控制代碼並嘗試打印它們,但它只會將它們按原樣交給打印機。
然後USB端口可以像任何其他打印機一樣使用。
這種方法適用於我開發的POS系統。
當您連接打印機時,它會嘗試自行安裝,並且由於沒有驅動程序而失敗。然後它出現在設備管理器的「其他設備」部分。 – JDibble 2008-10-09 15:15:33