2013-03-26 46 views
11

我不完全是C#專家,我爲音樂程序製作了一些鋼琴卷軸等尷尬的東西(因此生成一個帶有數學等的WPF畫布)和一些簡單的程序來執行一些常見任務,比如詳細描述一些數據(數學運算,GUI交互等)。在C#中使用帶有驅動程序或API的USB打印機

我需要一個非常一般的概述來說明如何在自己的計算機上檢測USB打印機並使用它我已經搜索到了這裏,並在谷歌,這是我的發現:

Link 1

Link 2

Link 3

Link 4

Link 5

Link 6

而且類似的鏈接,告訴它我理解幾乎爲零:(

確定這裏各種方法,就是我來與(我會盡量成爲b rief越好):

A)對於使用打印機,沒有驅動程序(這個定義可能不準確,但我有點糊塗了......)

我應該:

1)找到一種方法來檢測USB門和哪些設備通過產品ID和供應商ID連接到它們。在DeveloperfusionArticle的特定情況下,作者解釋了USB的一些基本知識,並告訴您使用人機接口設備來檢測它。 (我正在使用Windows 7,我找不到任何HID,只是其他隨機的USB驅動器,我沒有任何想法如何與它們交互)

2)創建數據流並將它們發送到USB打印機(或打算試用的watever設備)以及右邊的消息管道中的命令。

B)要使用的打印機與司機或Windows API或預焙驅動程序:

我應該:

1)使用[MSDN System.printing庫]發現所有的.NET類[鏈路數6]和導頻直接打印機與使用從這些類的權利的方法(通過使用System.printing庫的發現設備之後)...

好,使得點:

我真的沒有想法,正確的步驟,這就是我想問你:

一步一步指導如何做到這一點,特別是第一個(正如我在MSDN論壇上看到的第二個問題實際上是研究代碼的問題)。我不想讓你爲我編寫代碼(儘管你可以,如果你想的話)。我只是要問一個通用的指導方針,就是爲了達到最終結果而採取的正確步驟。發佈鏈接,無論作品...

+0

'我問只是一個一般原則上是遵循以達到最終result.'正確的步驟,但如此不適合它。 – I4V 2013-03-26 21:24:24

+0

那麼把代碼然後,我很好,因爲我沒有真正的想法如何開始。謝謝。 – 2013-03-26 21:42:13

+4

根本不要做任何「檢測」。 Windows的工作是隱藏打印機之間的差異。每臺打印機看起來都與您的程序相同。 – 2013-03-26 21:56:00

回答

5

這個答案是選項A

確實很困難的問題。從這樣的高級編程語言訪問低級硬件非常困難。我曾經使用Assembly來完成它,它可以給你非常低的控制權。我唯一能想到的就是libusb,它對C#也有很好的包裝。它提供對USB設備的直接訪問,如打印機。一個好的C#開始將控制更簡單的USB設備來獲取它的掛起。確保您知道打印機如何解釋從USB端口寫入的數據。

C# bindings

+0

謝謝,這是一個有用的答案!如果在某些日子裏我沒有收到更好的答案,我會檢查你的最佳答案。 那麼我需要控制一個COM串行打印機,但我發現C#有一些庫來做到這一點,所以我通過使用System.IO.Ports.SerialPort命名空間解決了這個問題。既然你的答案的主題仍然令我感興趣,我也會檢查libusb的工作。 再次感謝您。 – 2013-04-01 22:04:20

+0

歡迎您,很高興看到您解決了您的問題:-) – 2013-04-04 11:06:38

+0

是的,感謝您的幫助。 – 2013-04-05 10:39:31