亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【.Net MF新特性】Usb雙接口支持

系統 1584 0

以前看 USB 協議 2.0 的時候,有個認識上的誤區,認為所謂的復合設備,必須是兩個物理上相獨立的 USB 設備(兩個 USB Device ,兩個 USB 地址,只是在同一條 USB 總線而已)。最近在開發 .Net Micro Framewok USB 雙接口功能時,才明白復合設備原來也可以是這樣實現 !

USB 設備來說,至少會有一個 USB 配置,而這個配置可以包括一到多個接口,而一個接口又可以包括多個端點。對 Windows 平臺來說,每一個接口在邏輯上對應一個虛擬設備,可以分別安裝不同的驅動(視接口的配置來定,即使兩個接口配置一樣,也需要安裝兩次相同的驅動),但從表面上看和兩個真實的物理 USB 設備沒有什么不同。

1 為什么要實現雙接口

有在 .Net Micro Framework 調試 SideShow 經驗的用戶,就會有特別深的感觸,因為 SideShow 通信是基于 USB ,而大部分 .Net Micro Framework 調試口也是基于 USB ,由于只有一個接口,所以 PC 端要么安裝 SideShow 驅動,要么安裝 .Net Micro Frame USB 設備驅動,二者不能共存(當然讓兩個驅動共存,也可以設置不同的 PID VID ,但是這樣就需要在 .Net Micro Frame 開發板上進行相應的配置了),別說在線調試了,光編譯下載,就不知道要折騰好幾回。

所以對只有一個 USB Debug 口的開發板,要調試 USB 相關例程是非常痛苦的。

USB 雙接口的方案就是為解決該問題而生。同時有兩個 USB 接口,即可以安裝兩個不同的驅動,也可以在線調試 USB 例程。這是多么一個令人神往的特性,尤為可喜的是這已經不僅僅是個意境,現如今已成為現實。目前我們已經測試通過的有: Debug+Mass Storage U 盤), Debug+HID (鼠標), Debug+Application (應用口)。當然也可以根據需要配置成三個、四個設置或多個你任意想要的接口。

【.Net MF新特性】Usb雙接口支持

2 支持雙接口,需要做些什么

【.Net MF新特性】Usb雙接口支持

.Net Micro Framework USB 接口模型

第一、 修改 .Net Micro Framework USB 接口配置,把一個接口修改成兩個接口;

第二、 修改 .Net Micro Framework USB 接口驅動,以前僅支持端點 1 和端點 2 ,目前增加對端點 3 和端點 4 的支持。邏輯上接口 1 包括端點 1 和端點 2 ,接口 2 包括端點 3 和端點 4

第三、 修改 PAL 層接口,增加端點 3 和端點 4 的讀寫接口函數;

第四、 編寫 P/Invoke 接口,讓 C# 程序也可以讀寫端點 3 和端點 4 的數據(端點 1 和端點 2 默認供調試程序讀寫用);

第五、 修改 .Net Micro Frame USB Windows 驅動,讓其支持雙接口。(當然如果你的接口配置為 HID Mass Storage ,那就不需要開發專門的驅動了);

第六、 剩下的就是測試再測試了。

3 一個雙接口通信的例子

驅動程序等等安裝完畢,準備停當之后,我們需要編寫兩部分程序來調試 USB 應用。一是普通 Windows USB 讀寫程序,這個程序我在以前寫的 Blog 上已經介紹了( http://blog.csdn.net/yefanqiu/archive/2009/01/21/3849067.aspx )這里就不多說了;二是開發一個 .Net Micro Frame USB Device 應用程序,來響應 Windows 平臺的 USB 讀寫程序。

我們的程序很簡單,實現一個轉發功能,也就是把 Windows 平臺的 USB 程序發送的數據,原封不動的發送回去。代碼如下:

using System;

using Microsoft.SPOT;

using System.Threading;

using Microsoft.SPOT.Hardware;

namespace USBDeviceTest

{

public class Program

{

public static void Main()

{

byte [] bytData= new byte [1024];

YFInterop. MFNative .Usb_Open(0);

while ( true )

{

int intSize=YFInterop. MFNative .Usb_Available();

if (intSize > 0)

{

if (YFInterop. MFNative .Usb_Read(bytData, 0, intSize) == intSize)

{

string strData = intSize.ToString()+ ":" ;

for ( int i = 0; i < intSize; i++)

{

strData += bytData[i].ToString() + " " ;

}

Debug .Print(strData);

YFInterop. MFNative .Usb_Write(bytData, 0, intSize);

}

}

Thread .Sleep(3);

}

YFInterop. MFNative .Usb_Close();

}

}

}

【.Net MF新特性】Usb雙接口支持

注:測試時, VS2008 可以一直處在調試模式(可即時打印調試信息),此時 USB Test 程序同時完成數據收發。

【.Net MF新特性】Usb雙接口支持


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美深夜影院 | 亚洲精品宾馆在线精品酒店 | 久久精品国产国语对白 | 亚洲国产影院 | 99视频免费看 | 免费观看一级毛片 | 青青青在线视频人视频在线 | 91在线视频免费播放 | 亚洲精品国产成人专区 | 2020国产成人免费视频 | 亚洲天堂久久久 | 久久综合色视频 | 性刺激的欧美三级视频 | 国产观看精品一区二区三区 | 国产ww久久久久久久久久 | 国产精品亚洲精品爽爽 | 在线精品国内视频秒播 | 九九99久麻豆精品视传媒 | 一级特级aaaa毛片免费观看 | 亚洲欧美久久一区二区 | 欧洲a老妇女黄大片 | 久久精品久久精品久久 | 国产香蕉视频 | 可以免费观看的毛片 | 国产你懂的 | 特级女人十八毛片a级 | 天天鲁天天爱天天鲁天天 | 国产成人a v在线影院 | 色之综合网 | 天天爱天天色 | 一区二区三区中文字幕 | 天天干天天操天天拍 | 亚洲综合色就色手机在线观看 | 亚洲69av| 国产成人精品免费午夜 | 奇米777四色影视 | 97影院午夜在线观看视频 | 午夜免费福利影院 | 在线亚洲欧美 | 日韩男女视频 | 国产成人精品在视频 |