背景:公司最近需要用到外接打印機(型號:東芝標籤打印機B-FV4T,採用東芝自定義的TPCL指令格式),現在市場上可以購買到的主流打印機一般都是支持一下通信模式的。
1:USB通信
2:網絡通信
3:串口通信(一般是RS232)
4:藍牙通信(東芝標籤打印機B-FV4T,沒有藍牙,所以本人沒辦法測試)
原因:因爲想要打印機做到即插即用,所以需要繞過官方提供的打印機驅動,使用打印機指令來進行打印控制。但是其實還是避免不了一些驅動的安裝,比如USB轉RS232轉接線的驅動等,但是在Win10操作系統,所有驅動都會自己安裝,不需要那麼麻煩。
USB通信:
usb通信有很多方式,我查詢了很多網上的資料,大體上有三種,1:LibUsbDotNet 2:CyUSB 3:Win_32Api
前兩種方式都需要下載對應的庫文件(大家可以百度查詢相關資料,很多),第三種是直接調用win32_api的函數。
這三種方式我都進行了測試,講講各自的區別。
第一種:功能很強大,但是有個麻煩的地方是,必須用他自己的一個軟件(inf-wizard.exe),對USB設備進行註冊後,才能被識別,如下圖。
第二種:CyUSB提供三種USB可識別的驅動,但是我的使用的打印機以下三種都不能識別,我不知道是不是我哪裏沒有設置對,或者是哪裏使用出錯了,反正最後沒有識別到我的USB設備,就放棄了;
CyConst.DEVICES_CYUSB——由CyUSB.sys提供設備驅動的USB設備
CyConst.DEVICES_HID——USB人機接口設備(如鍵盤、鼠標)
CyConst.DEVICES_MSC——USB大容量存儲類設備(如U盤、移動硬盤)
第三種:調用Windows API,由於沒有調用人家封裝的庫,所以代碼比較複雜,比較多,但是功能齊全,我最後就是使用了這個方法。大家可以參考這篇文章“C#與USB HID間的通信”,但是他這篇文章的 講的是USB中HID類型的通信,可以借鑑一下,但是如果你的設備不是HID類型的話,還需要修改。
轉:c# USB通信
網絡通信:
其實網絡通信什麼好講的,就是建立一個Socket對象進行通信即可。
轉:c# 網絡通信
串口通信:
串口通信,建立一個SerialPort對象進行通信,但是需要注意一些細節方面的設置,否則可能會導致通信失敗。
轉:c# 串口通信