Bất kỳ ý tưởng nào về cách tôi có thể lái xe máy in POS USB tốt nhất từ C#. Máy in POS thường được nối tiếp, TCP/IP hoặc USB. Tôi biết làm thế nào để hoàn thành nối tiếp và TCP/IP nhưng không có ý tưởng về thông tin liên lạc thông qua USB trong C#. Tôi biết rằng có một lớp có sẵn từ Microsoft được gọi là POS.NET, nhưng tôi muốn thử và tránh sử dụng điều này. Bất kỳ ý tưởng hoặc thư viện C# nào mà mọi người có thể đề xuất sẽ thực sự được đánh giá cao. Cảm ơnLái máy in POS qua USB trong C#
Trả lời
Bạn thực sự nên cân nhắc sử dụng POS cho các đối tượng dịch vụ .NET và OPOS hoặc .NET (ví dụ: Epson cung cấp cả hai). POS cho .NET tuân theo tiêu chuẩn công nghiệp UnifiedPOS để giao tiếp với các thiết bị này.
Nếu máy in tự đăng ký là Thiết bị giao diện con người, bạn có thể P/INVOKE into the appropriate Win32 APIs. Dưới đây là chữ ký:
[ 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ó một C# wrapper cho api của Win32 USP từ những kẻ icsharpcode here, và tôi đã nhìn thấy ít nhất one tài liệu tham khảo khác đến công cụ USB trong Net.
Điều khó hiểu là Máy in có yêu cầu OPOS để hoạt động hay không. Tôi đã làm một số công việc trên một dự án POS trong. Net một vài năm trở lại, và từ những gì tôi nhớ OPOS là khá nhiều tiêu chuẩn cho phần cứng của sự vật (Và tại thời điểm tất cả các API OPOS sử dụng COM interop). Các thiết bị đôi khi cũng có giao thức truyền thông độc quyền được ghi lại, trong trường hợp đó bạn có thể sử dụng nó để nói chuyện với thiết bị bằng thư viện USB.
Nếu bạn đã cuộn mã kiểm soát máy in của riêng mình thì bạn có thể chuyển các lệnh thẳng đến máy in bằng cách thiết lập máy in bằng trình điều khiển máy in "Chung/Văn bản" trên cổng USB. Trình điều khiển đó sẽ không giải thích lại mã kiểm soát và cố gắng in chúng, nhưng nó sẽ chỉ đưa chúng ra máy in.
Sau đó, cổng USB có thể được sử dụng giống như bất kỳ máy in nào khác.
Cách tiếp cận này đã hoạt động đối với tôi trên hệ thống POS mà tôi đã phát triển.
- 1. Android ESC/POS In qua WiFi
- 2. Gửi dữ liệu đến máy in USB trong C#?
- 3. Người ngoài hành tinh thanh toán qua máy in POS và in ảnh
- 4. Cách tốt nhất để in trực tiếp tới máy in, như máy in POS, qua web là gì?
- 5. windows 8 lái xe usb android
- 6. HP TouchPad USB lái xe trên Android
- 7. Truy cập máy dev localhost qua usb
- 8. Ứng dụng kế thừa DOS với máy in USB
- 9. Gửi dữ liệu đến máy in USB ở Delphi
- 10. Nhận nhãn lái xe trong C#
- 11. Sử dụng máy in USB có C#, có và không có trình điều khiển hoặc API
- 12. Giao diện OPOS của Máy in POS và khi nào sử dụng nó
- 13. Android HttpClient gửi yêu cầu tới máy chủ qua USB
- 14. Truy cập thiết bị iOS qua USB trên máy mac
- 15. Máy in Epson điểm bán hàng - Không thể in bằng C#
- 16. Kết nối máy chủ lưu trữ nối tiếp USB USB?
- 17. Hệ thống POS với Pos cho .NET
- 18. tay lái phá vỡ khi đi qua this.item trong Spine.js
- 19. Thư viện USB C++
- 20. Lập trình USB C++
- 21. Thi đua UART qua USB
- 22. in một txt đến máy in mặc định bằng C#
- 23. Làm cách nào để đọc tệp từ máy ảnh được đính kèm qua USB
- 24. Điều khiển đèn USB qua phần mềm
- 25. Sự cố máy in hiện hoạt trong In tài liệu từ thông qua VB.net
- 26. Cách phát hiện xem có bật hoặc tắt máy in USB được kết nối không?
- 27. In tệp tới máy in trong Ruby
- 28. Nhận dạng giọng nói qua cổng USB
- 29. Nhận máy in hóa đơn Epson để in từ Arduino
- 30. Xác định giao diện HID là POS hoặc Bàn phím trong C++
Khi bạn kết nối máy in, nó sẽ tự cài đặt và không thành công vì không có trình điều khiển nào. Sau đó, nó xuất hiện trong phần "Thiết bị khác" trong Trình quản lý thiết bị. – JDibble