C 與USB裝置通訊

2021-07-07 05:12:34 字數 2241 閱讀 5262

最近有乙個專案,也是我碩士大**要寫的東西,就是從兩個線陣相機上讀取資料-->分析資料-->做到利用線陣相機檢測接觸線(鐵路接觸網)幾何引數的功能。由於線陣相機是從武漢的乙個創業公司買的,實在是坑死個人了,就是為了接收個usb傳送過來的資料,費了我好大力氣,

其中兩篇是講的libusb,是乙個開源的usb類庫叫libusbdotnet。我按照文章中的要求一步一步的配置好我的工程,但是最終連usb裝置都沒發現,

三,再接著搜,發現很多上面類似的資料,咋辦呢?去圖書館借了本usb方面的書,書上說c#開發usb上位機不是很方便,而用c++開發就很方便了,無奈要寫乙個帶圖形介面的上位機程式,對方給的demo程式又那麼扯淡(用mfc開發的,實時接收相機傳送的資料,並繪製出波形圖,但是他這個程式沒寫好,沒傳送一次資料,螢幕就重新整理一次,效果太差,而mfc方面網上的資料也不是很好找,所以決定用c#搞定這個東西,畢竟c#可用資料比較多,而且之前做過很多c#+gdi畫圖顯示波形的工程了)。

書上提到了:cypress,這是乙個公司啊。是cypress為其ez-usb系列usb介面晶元提供了乙個全新的.net平台開發包--cypress suite usb,目前最新的版本為cypress suite usb 3.4.7。這個開發包中,c#有一些上位機demo和上位機開發使用的動態鏈結庫cyusb.dll。注意,c++使用的庫檔案是cyapi.lib檔案,與c#的不同,他們只能引用自己對應字尾的庫檔案。可不能搞混哦。那麼,c#上位機只需要cyusb.dll就可以了。

此處插入一部分,講一下ezusb和cyusb及上位機的區別:

四,講一下上位機程式的開發過程。首先要把cyusb.dll新增引用到自己的專案中。步驟如下:

(1)建立winform專案(不多說)

(2)在專案(不是解決方案啊,記住

)上右鍵--新增引用--瀏覽--找到cyusb.dll--確定,ok

(3)既然我們已經把程式集類庫新增進入我們的工程裡面了,那麼我們要想使用該類庫的話,就要在建立的winform窗體程式中的using部分新增

"using cyusb;"就可以了,下面的程式中就可以直接使用了。很簡單吧,

(4)寫接收資料的程式,裡面有很多控制類,usbdevicelist,cyusbdevice,cycontrolendpoint...很多控制類。我們要接收資料的話只用到了usbdevicelist,cyusbdevice,cycontrolendpoint,cybulkendpoint,cyusbendpoint這五個類。簡單介紹一下,usbdevicelist:它提供了usb裝置列表資訊,支援usb驅動,usb hid裝置(滑鼠,鍵盤等)和usb大容量儲存裝置的識別;cyusbdevice:他提供了usb裝置的資訊列表,通過該類中的函式及成員變數可以獲知usb裝置的各類屬性引數。這些函式呢,下面程式中會直接用到,就不一一枚舉了;cycontrolendpoint:它提供了usb裝置控制端點的讀寫及設定,通過該類中的函式及成員變數可以實現usb裝置的控制傳輸操作,其中的幾個引數,下面程式會列舉到;cybulkendpoint:他是cyusbendpoint類的子類,提供了對usb塊傳輸端點的控制。通過該類中的函式及成員變數可以實現usb裝置的塊傳輸操作,下面程式用用於接收資料時可以使用cybulkendpoint類,也可以使用cyusbendpoint類,都可以。

(5)具體程式,片段:

public partial class main:form }

//p0start//p0stop

private void xferdatacontrol(byte x)

//傳輸控制引數的函式 }

//讀取資料,注意接收

資料的xferdata與傳輸控制引數是的xferdata有很多不同,一定要注意。

private void getdata()

xferdatacontrol(x);//stop

//cuep = new cyusbendpoint();

//cbep1 = mydev.bulkinendpt;

= 20;

buffer, ref  by);

= 20;

buffer, ref  by);

= 20;

buffer, ref by); }

}(6)資料接收完畢,可以測試了。針對不同的裝置,一些配置引數可能會不同,但是大體上是一致的。都是用如上程式中用到的這幾個類。如果遇到這樣的問題,可以一方面查資料cyusb,一反面看看有關的書。謝謝,請提出寶貴意見。希望對你有幫助!哦,對了,之前遇到了乙個尿人,媽的他寫過這樣的c#程式,部落格刪除了,留了郵箱,我問他尋求幫助時,他跟我要錢,擦,殺人都有。我共享我的程式,幫助需要幫助的人。

使用Delphi與Usb裝置進行通訊

下面是訪問 usb 裝置的類單元檔案 unit tusbutil u inte ce uses windows,messages,sysutils,variants,classes,stdctrls,dialogs,setupapi const max path 260 檔名最大長度 max dat...

C 監控USB裝置

程式稍微修改便能用作一般性的處理,目前實現的功能類似於監控windows usb裝置的插拔操作。可以直接注釋掉cstring的使用後使用 cl ehsc w4 zi 編譯,或貼上到任意的vs中做編譯。include include include include include include cs...

C 獲得裝置usb資訊

需要在專案右擊引用,點選程式集,搜尋 system.management 然後安裝他 然後使用下面的 就可以獲得裝置的 usb 請看 static list getusbdevices foreach var device in collection collection.dispose retur...