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

【.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條評論
主站蜘蛛池模板: 色综合久久中文 | 777奇米影音| 久久艹在线 | 午夜一级毛片免费视频 | 精品国产亚洲一区二区三区 | 亚洲99在线的 | 夜色视频一区二区三区 | 国模无水印一区二区三区 | 免费一级特黄视频 | 久久久久久999| 天堂伊人网 | 最新永久地址 | 91精品国产视频 | 麻豆国产高清精品国在线 | 免费毛片观看 | 九九九精品视频免费 | 欧美一区日韩一区中文字幕页 | 99在线免费观看 | 不卡免费在线视频 | 四虎精品在线观看 | 伊人久久久综在合线久久在播 | 国产精品高清在线观看地址 | 视频一区视频二区在线观看 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 爱色aⅴ| 久久综合香蕉久久久久久久 | 99re热久久精品这里都是精品 | 免费在线a| 亚洲精品色婷婷在线影院麻豆 | 91精品国产免费久久久久久青草 | h片在线| 久久久久夜 | 亚洲久久影院 | 天天曰天天爽 | 老子影院午夜 | 中文精品久久久久国产网站 | ass最极品女人下部pic | 久久久精品麻豆 | 成人精品一区二区久久久 | 四虎影院在线免费观看 | 2020年国产高中毛片在线视频 |