CY7C68013 USB接口相機開發記錄 - 第四天:上位機編寫1


 前面學習了USB相機硬件固件、設備驅動,可以實現USB設備識別、數據發送的功能。然后,非常重要的一部分,USB設備發出的數據,我要怎么接受,怎么查看發送的數據是否是正確的。網上百度了下,大部分人都使用的是C++的開發平台,而我想在.NET下使用C#制作上位機來實現USB設備數據的接收以及數據的顯示,這里的數據為圖像數據。查找了很久,C#部分的設計確實很少,大體的思路都有說道,但是更加清晰詳細的解釋沒有。下面就針對我這幾天查閱的資料作一分享:

基於VS開發平台,.NET架構下C#的USB設備編程,需要有以下幾部分:

1、設備驅動CyUSB.SYS:提供設備描述相關信息,用於系統設備管理器識別設備;

2、.NET平台下的動態鏈接庫CyUSB.dll:提供USB控制相關函數;

3、VS開發平台:用來進行上位機程序編譯,生成可執行文件;

這里主要介紹下CyUSB.DLL中的一些USB控制函數

(1)USB控制類函數

(2)USBDeviceList類

 USBDeviceList 函數

用於獲取當前計算機連接的所有USB設備列表,

函數原型:public USBDeviceList(byte DeviceMask)

參數DeviceMask用於表示設備的類型。支持CyUSB驅動、USB HID設備和USB大容量存儲設備的識別,取值如下:

CyConst.DEVICE_CYUSB:使用CyUSB驅動的USB設備

CyConst.DEVICE_MSC:USB大容量存儲設備

CyConst.DEVICE_HID:USB HID設備

USBDeviceList函數在程序中使用方式:

聲明:USBDeviceList usbDevices;

使用:usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //獲取連接的CyUSB設備

Count成員變量

原型:public int Count(get;)

使用:

USBDeviceList usbDevices;

usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //獲取連接的CyUSB設備

if(usbDevices.Count > 0)

{

   //執行設備操作

}

Dispose函數

原型:public void Dispose()

使用:

先獲取設備列表

USBDeviceList usbDevices;

usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //獲取連接的CyUSB設備

在使用退出時,調用Dispose函數釋放USB資源

usbDevices.Dispose();

USBDeviceList[...]成員變量

使用:通過后面括號中的值,來尋找相對應的USB設備。

 (3)CyUSBDevice類

通過該類中的一些方法可以獲取USB設備的信息及各類屬性參數。比如:BCD碼、設備類信息、協議信息、子類信息、驅動名稱信息、制造商名稱信息等等。

(4)CyControlEndPoint類

該類提供了USB設備控制端點的讀寫和設置,通過該類中的函數及成員變量可以實現USB設備的控制傳輸操作。這個在USB數據收發過程中相當重要。

 

 

 XferData函數

通過當前USB控制端點執行一次控制傳輸

原型:unsafe public new bool_XferData(ref byte[] buf, ref int len)

使用:

CyControlEndPoint CtrlEndPt = null;

CtrlEndPt.Target = CyConst.TGT_DEVICE;  
CtrlEndPt.ReqType = CyConst.REQ_VENDOR;
CtrlEndPt.Direction = CyConst.DIR_TO_DEVICE;
CtrlEndPt.ReqCode = x;
CtrlEndPt.Value = 0;
CtrlEndPt.Index = 0;

CtrlEndPt.XferData(ref buf, ref len);  //參數buf表示控制傳輸的緩沖區,參數len表示控制傳輸的字節數。

(5)CylsocEndPoint類

用於同步傳輸端點控制,是CyUSBEndPoint的一個子類。同步傳輸端點控制類CylsocEndPoint提供了對同步端點的定義和函數支持,其函數列表如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM