以前看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(应用口)。当然也可以根据需要配置成三个、四个设置或多个你任意想要的接口。
2 支持双接口,需要做些什么
.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();
}
}
}
注:测试时,VS2008可以一直处在调试模式(可即时打印调试信息),此时USB Test程序同时完成数据收发。
分享到:
相关推荐
.NET Micro Framework(简称.NET MF)是由微软开发的一个嵌入式操作系统平台,主要针对资源有限的设备,如物联网(IoT)设备、智能家居组件和小型工业控制器。标题中的".Net MF 模拟器"指的是一个用于模拟.NET MF环境...
源程序是 http://bansky.net/blog/2008/03/jpeg-camera-and-micro-framework/<br>原作者是在 Tahoe development board 实现的,这个不需要使用硬件,直接就可以通过模拟器抓取图像
6. **安全与固件更新**:讲解.NET MF的安全特性,如代码签名、加密,以及如何实现固件的远程更新机制。 7. **实例分析**:书中可能包含多个实际项目案例,帮助读者将理论知识应用于实践中,如智能家居设备、环境...
7. **安全与加密**:探讨.NET MF中的安全特性,包括代码签名、安全策略和加密技术,以保护嵌入式设备免受恶意攻击。 8. **电源管理**:阐述如何利用.NET MF实现高效电源管理,延长设备电池寿命。 9. **源码分析**...
3. **插入设备**:将运行.NET Micro Framework的硬件设备通过USB接口连接到电脑。 4. **识别设备**:连接后,Windows会尝试自动识别并安装驱动,但通常会失败。此时,你可以在“设备管理器”中找到一个标有黄色感叹...
它包括了.NET MF运行时环境、类库、设备驱动程序和应用程序接口(API)。运行时环境是.NET MF的核心,它实现了.NET框架的关键组件,如垃圾回收、类型系统和安全模型。类库则提供了一套丰富的预定义类型,以便开发者...
2. **STM32F10x硬件特性**:学习STM32F10x处理器的架构,包括CPU内核、存储器配置、外设接口(如GPIO、SPI、I2C、ADC、DAC等)及其在.NET MF环境下的驱动开发。 3. **.NET MF项目设置**:如何在Visual Studio或其他...
2. **.NET兼容性**: 虽然.NET MF是精简版的.NET框架,但它保留了大部分.NET Framework的关键特性,如类型安全、垃圾回收和托管代码,使得开发者能快速上手。 3. **硬件抽象层(HAL)**: .NET MF提供了一个硬件抽象层...
标题中的“基于ASP.NET摄像机监控中英双语网站源码”表明这是一个使用ASP.NET技术开发的、具备摄像头监控功能的网站项目,并且该网站支持中文和英文两种语言。这通常意味着开发者需要对ASP.NET框架有深入理解,同时...
- **类库与API**:.NET Micro Framework提供了一系列预定义的类库,如GDI+(图形设备接口)和.NET Compact Framework的子集,使得开发人员可以方便地处理I/O操作、网络通信和UI设计。 - **资源管理**:由于目标硬件...
.NET MF支持C#编程语言,具有良好的可移植性和可扩展性,能够满足不同应用场景的需求。 #### 三、.NET Micro Framework在物联网领域的优势 1. **资源利用率高**:.NET MF专为低功耗、内存受限的设备设计,可以在...
注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发环境为Visual Studio 2012,数据库为SQL SERVER2012R2,使用.net 4.5开发。 一、源码介绍 所有行业的ERP系统/进销存/仓库系统,该系统为vs...
.NET Micro Framework...不过,由于.NET MF资源有限,与桌面版的.NET Framework相比,某些高级功能可能不支持或者有不同的实现方式。在实际开发中,务必了解目标硬件平台的限制,以确保代码能在嵌入式环境中正确运行。
在C#项目中,由于.NET Framework本身并不直接支持Media Foundation,我们需要引用`System.Runtime.InteropServices`命名空间,并使用P/Invoke技术来调用Windows API。首先,添加以下代码引入Media Foundation DLL:...
标题中的“基于.NET Micro Framework的简单项目”是指利用.NET Micro Framework(简称.NET MF)这个轻量级的操作系统框架,开发一个适用于嵌入式设备的项目。.NET MF是微软为资源受限的硬件设备设计的一个软件平台,...
ASP.NET是微软开发的一个用于构建Web应用程序的开源框架,它支持多种Web开发模式,如Web Forms、ASP.NET MVC和ASP.NET Core。其中,MVC模式是现代Web开发中的首选,因为它提倡分离关注点,使代码更易于理解和测试。 ...
- **特性**:.NETMF提供了丰富的API集合,支持网络连接、文件系统操作等;而GHI则提供了一系列硬件开发板,方便开发者快速搭建开发环境。 - **支持**:微软为.NETMF提供了广泛的技术文档和支持,GHI则通过论坛和官方...
MF驱动是一款电脑主板usb接口的驱动软件,旨在帮助用户解决usb接口问题,有了它电脑的usb才能够正常使用,电脑使用所必备的软件驱动。有需要的朋友欢迎来本站下载使用!MF驱动驱动介绍MFUSB驱动,MF默认的USB驱动...