2013-03-26 38 views
11

Tôi không phải là chuyên gia C#, tôi đã thực hiện một số điều khó xử như cuộn piano cho chương trình âm nhạc (do đó tạo ra một khung WPF với toán học) và một số chương trình đơn giản để thực hiện các tác vụ phổ biến như xây dựng một số dữ liệu một cách nhanh chóng (hoạt động toán, tương tác GUI, v.v.Sử dụng máy in USB có C#, có và không có trình điều khiển hoặc API

Tôi cần tổng quan chung về cách phát hiện máy in USB trên máy tính của riêng mình và làm việc với nó . tôi đã tìm kiếm cho rằng ở đây và trên google, và đó là những gì tôi thấy:

Link 1

Link 2

Link 3

Link 4

Link 5

Link 6

Và khác liên kết tương tự nói với các phương pháp khác nhau trong đó tôi đã hiểu gần gì :(

Ok đây là những gì tôi đến với (tôi sẽ cố gắng làm b Rief càng tốt):

A) Để sử dụng một máy in mà không có trình điều khiển (định nghĩa này có thể không chính xác, nhưng tôi là một chút nhầm lẫn ...)

tôi nên:

1) Tìm cách phát hiện cửa usb và thiết bị nào được kết nối với chúng thông qua ID sản phẩm và ID nhà cung cấp. Trong trường hợp cụ thể của Developerfusionarticle, authore giải thích một số vấn đề cơ bản của USB và yêu cầu bạn sử dụng Human Interface Device để phát hiện nó. (Tôi đang sử dụng Windows 7 và tôi không thể tìm thấy bất kỳ HID, chỉ cần ổ đĩa USB ngẫu nhiên khác, và tôi có NO IDEA AT ALL về cách tương tác với họ)

2) Tạo luồng dữ liệu và gửi chúng đến máy in usb (hoặc thiết bị watever bạn dự định thí điểm) cùng với các lệnh, trên các đường ống thông điệp bên phải.

B) Để sử dụng một máy in với trình điều khiển hoặc cửa sổ API hoặc trình điều khiển prebaked:

tôi nên:

1) Sử dụng tất cả các lớp .NET tìm thấy trong [MSDN System.printing thư viện] [ liên kết số 6] và thí điểm trực tiếp máy in (sau khi tìm thấy các thiết bị với việc sử dụng các thư viện System.printing) với việc sử dụng các phương pháp ngay từ những lớp học ...

Ok, làm cho điểm:

Tôi thực sự KHÔNG CÓ Ý TƯỞNG mà trên đó các bước phù hợp và đó là những gì tôi đang cố gắng hỏi bạn:

Hướng dẫn từng bước về cách thực hiện, đặc biệt là bước đầu tiên (như tôi đã thấy trên diễn đàn MSDN câu hỏi thứ hai thực sự là vấn đề nghiên cứu mã). Tôi không muốn bạn viết mã cho tôi (mặc dù bạn có thể nếu bạn muốn). Tôi đang hỏi chỉ là một hướng dẫn chung, đó là những bước đi đúng đắn để đạt được kết quả cuối cùng. Đăng liên kết, bất kỳ công trình nào ...

+0

'Tôi đang yêu cầu chỉ là một hướng dẫn chung trên đó là những bước đi đúng đắn để làm theo để đạt được result.' thức Nhưng SO không phải dành cho nó. – I4V

+0

Cũng đặt mã sau đó, tôi cũng tốt với nó vì tôi không có ý tưởng thực sự về cách bắt đầu. Cảm ơn. –

+4

Không làm bất kỳ "phát hiện" nào cả. Đó là công việc của Windows để ẩn sự khác biệt giữa các máy in. Mỗi máy in trông giống với chương trình của bạn. –

Trả lời

5

Câu trả lời này là dành cho tùy chọn A

Thực sự rất khó khăn. Truy cập phần cứng mức thấp, từ một ngôn ngữ lập trình cấp cao như vậy là rất khó khăn. Tôi đã từng làm điều đó bằng cách sử dụng Assembly, nó có thể cung cấp cho bạn khả năng kiểm soát ở mức độ rất thấp. Điều duy nhất tôi có thể nghĩ đến là libusb có trình bao bọc tốt cho C#. Nó cung cấp quyền truy cập trực tiếp vào các thiết bị USB, như máy in. Một khởi đầu tốt của C# sẽ kiểm soát các thiết bị USB đơn giản hơn để có được nó. Đảm bảo bạn biết cách máy in của mình diễn giải dữ liệu, được ghi từ cổng usb.

C# bindings

+0

Cảm ơn bạn, đây là một câu trả lời hữu ích! Nếu tôi không nhận được bất kỳ câu trả lời nào tốt hơn trong một vài ngày, tôi sẽ kiểm tra bạn là câu trả lời hay nhất. Tôi cần kiểm soát máy in nối tiếp COM, nhưng tôi thấy C# có một số thư viện để thực hiện điều đó và vì vậy tôi đã giải quyết được vấn đề bằng cách sử dụng không gian tên System.IO.Ports.SerialPort. Vì chủ đề của câu trả lời của bạn vẫn quan tâm đến tôi, tôi cũng sẽ kiểm tra hoạt động của libusb. Cảm ơn bạn một lần nữa. –

+0

Chào mừng bạn, vui mừng khi thấy bạn đã giải quyết được vấn đề của mình :-) –

+0

Vâng, cảm ơn sự giúp đỡ. –

Các vấn đề liên quan