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

【.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久久99精品观看 | 久久精品国产精品青草图片 | 国产亚洲精品一区二区在线观看 | 日本爱爱网| 91视频国产一区 | 久久se精品一区二区国产 | 尹人香蕉网在线观看视频 | 美女视频很黄很暴黄是免费的 | 高清国产一区二区三区 | 日韩黄a级成人毛片 | 免费精品精品国产欧美在线 | 国产精品国产色综合色 | 99re热线精品视频 | 久草首页在线 | 伊人色院成人蜜桃视频 | 国产精品高清一区二区三区 | 久久精品免视着国产成人 | 日韩精品另类天天更新影院 | 精品视频一区二区三三区四区 | 中文国产成人精品久久水 | 免费观看日本特色做爰视频在线 | 黄色片网站观看 | 黄色a级毛片 | 国产亚洲日本人在线观看 | 擼擼色在线看观看免费 | 中文精品久久久久国产网址 | 国产精品嘿咻嘿咻在线播放 | 欧美日韩亚洲成人 | 91久久天天躁狠狠躁夜夜 | 久久免费精品视频在线观看 | 啪啪毛片 | 五月花精品视频在线观看 | 国产日韩一区二区 | 日本二区在线观看 | 色综合久久一区二区三区 | 亚洲黄色成人 | 精品国产中文字幕 | 深夜在线观看网站 | 久久久国产99久久国产久 | 欧美色视频超清在线观看 | 久久新地址 |