`
lovecontry
  • 浏览: 1036221 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

以前看USB协议2.0的时候,有个认识上的误区,认为所谓的复合设备,必须是两个物理上相独立的USB设备(两个USB Device,两个USB地址,只是在同一条USB总线而已)。最近在开发.Net Micro FramewokUSB双接口功能时,才明白复合设备原来也可以是这样实现!

USB设备来说,至少会有一个USB配置,而这个配置可以包括一到多个接口,而一个接口又可以包括多个端点。对Windows平台来说,每一个接口在逻辑上对应一个虚拟设备,可以分别安装不同的驱动(视接口的配置来定,即使两个接口配置一样,也需要安装两次相同的驱动),但从表面上看和两个真实的物理USB设备没有什么不同。

1为什么要实现双接口

有在.Net Micro Framework调试SideShow经验的用户,就会有特别深的感触,因为SideShow通信是基于USB,而大部分.Net Micro Framework调试口也是基于USB,由于只有一个接口,所以PC端要么安装SideShow驱动,要么安装.Net Micro Frame USB设备驱动,二者不能共存(当然让两个驱动共存,也可以设置不同的PIDVID,但是这样就需要在.Net Micro Frame开发板上进行相应的配置了),别说在线调试了,光编译下载,就不知道要折腾好几回。

所以对只有一个USB Debug口的开发板,要调试USB相关例程是非常痛苦的。

USB双接口的方案就是为解决该问题而生。同时有两个USB接口,即可以安装两个不同的驱动,也可以在线调试USB例程。这是多么一个令人神往的特性,尤为可喜的是这已经不仅仅是个意境,现如今已成为现实。目前我们已经测试通过的有:Debug+Mass StorageU盘),Debug+HID(鼠标),Debug+Application(应用口)。当然也可以根据需要配置成三个、四个设置或多个你任意想要的接口。

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

.Net Micro Framework USB接口模型

第一、 修改.Net Micro FrameworkUSB接口配置,把一个接口修改成两个接口;

第二、 修改.Net Micro FrameworkUSB接口驱动,以前仅支持端点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驱动,让其支持双接口。(当然如果你的接口配置为HIDMass 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 MF 模拟器

    修改自Embedded Programming with the Microsoft .NET Micro Framework 的GPSMFEmulator

    .Net MF 模拟器 抓图

    源程序是 http://bansky.net/blog/2008/03/jpeg-camera-and-micro-framework/&lt;br&gt;原作者是在 Tahoe development board 实现的,这个不需要使用硬件,直接就可以通过模拟器抓取图像

    MF板USB驱动 官方版

    MF驱动是一款电脑主板usb接口的驱动软件,旨在帮助用户解决usb接口问题,有了它电脑的usb才能够正常使用,电脑使用所必备的软件驱动。有需要的朋友欢迎来本站下载使用!MF驱动驱动介绍MFUSB驱动,MF默认的USB驱动...

    MF00546-.net core商城源码支持可视化布局小程序.zip

    .net core商城源码支持可视化布局小程序 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发语言 : C# 数据库 : SQL2012 开发工具 : VS2019 源码类型 : WebForm 基于 Asp.Net 5.0、Uni-App开发...

    MF00702-ASP.NET标签打印源码.zip

    ASP.NET标签打印源码 开发语言 : C# 数据库 : Access 开发工具 : VS2008 源码类型 : WinForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 一、源码描述 这是一款比较实用的打印源码,可以用于...

    Smart2440 LPC2478

    这个是周立功的开发板 2440 LPC2478 Smart2440 .net mF MicroFrameworkPK_v4_1 mdk 3.9a 这是自己移植.net mF MicroFrameworkPK .net mF MicroFrameworkPK_v4_1开发包

    MF00538-ASP.NET年会抽奖程序源码.zip

    ASP.NET公司年会抽奖程序源码 开发语言 : C# 数据库 : Access 开发工具 : VS2013 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 联欢会抽奖程序(含完整源代码),支持同时抽取...

    MF00608-.Net Core学校管理系统源码.zip

    MF00608-.Net Core学校管理系统源码

    MF00780-.NET通用权限管理平台源码.zip

    MF00780-.NET通用权限管理平台源码

    MF00385-ASP.NET通用项目管理源码.zip

    ASP.NET通用项目管理系统源码 开发语言 : C# 数据库 : SQL2008 开发工具 : VS2010 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发环境 :VS2010+sqlserver2008 +mvc 3.0+...

    MF00939-asp.net电子会签系统源码.zip

    MF00939-asp.net电子会签系统源码

    MF00389-asp.net产品管理系统源码.zip

    MF00389-asp.net产品管理系统源码

    MF00889- ASP.NET简易库存管理源码.zip

    MF00889- ASP.NET简易库存管理源码

    MF00873-ASP.NET产品快递登记源码.zip

    MF00873-ASP.NET产品快递登记源码

    MF00639-.NET Core前后端分离快速开发框架.zip

    支持数据库读写分离、分库分表及事务(仅支持单表操作,不支持多表) 全面采用Autofac作为IOC容器,面向接口编程,全面解耦 集成多种工具类库以及操作拓展 数据库:支持SqlServer,PostgreSQL,MySQL,Oracle(框架使用简单...

    imBMW:BMW iBus .NET MF SDK和硬件

    是.NET Micro Framework和硬件项目。 它开始为具有界面的汽车添加自定义功能,例如'91 -'10宝马以及Mini,Land Rover,Rover,MG和Rolls Royce的某些型号。 使用FEZ Mini的imBMW V1设备通过耳机电缆将iPod连接到...

    MF00174-ASP.NET公墓陵园管理系统源码.zip

    MF00174-ASP.NET公墓陵园管理系统源码

    MF00013-.NET core3.1跨平台智能云管理源码.zip

    .NET core3.1跨平台智能云管理系统源码 开发语言 : C# 数据库 : MySQL 开发工具 : VS2019 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发环境:ASP.NET CORE +VS2019+...

    MF00685-.Net Core微服务分布式开发框架源码.zip

    .Net Core微服务分布式开发框架源码 开发语言 : C# 数据库 : MySQL 开发工具 : VS2019 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 一个轻量级的完全可以落地的微服务/...

    MF253S.zip

    中兴MF253破解固件MF253SV1.0.0B033 注意事项 (1) 本软件仅适用于对ZTE MF253S进行升级。 (2) 下载过程请不要人为终止。 (3) 升级操作前需要设置PC的IP地址,详见4.3-2项说明。 (4) 如果连接不到设备请关闭...

Global site tag (gtag.js) - Google Analytics