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

【.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 | 日韩一区二区在线免费观看 | 久久久久欧美国产精品 | 免费一级淫片 | 久久最稳定资源站在线 | 一级毛片视频在线观看 | 成人国产视频在线观看 | 日本亚洲精品久久 | 欧美三级久久 | 婷婷综合网站 | 中文字幕日本精品一区二区三区 | 日本三级欧美三级 | 人人射人人干 | 日本一级毛片片在线播放 | 国产最新网站 | 日韩视频在线观看一区二区 | 亚洲精品老司机综合影院 | 久久久精品免费 | 在线视频日韩精品 | 亚洲大胆精品337p色 | 久久这里精品 | 日韩精品国产自在欧美 | 大色佬视频在线观看 |