C# 開發USB通信、串口通信、Socket通信(適用於打印機的指令操作等)

背景:公司最近需要用到外接打印機(型號:東芝標籤打印機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# 串口通信

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章