首页 基于Visual C sharp 的USB接口通信程序设计

基于Visual C sharp 的USB接口通信程序设计

举报
开通vip

基于Visual C sharp 的USB接口通信程序设计基于Visual C sharp 的USB接口通信程序设计 基于Visual C#的USB接口通信程序设计,应用研究, 覃冬华 约5149字 摘 要:详细介绍了USB接口的特点以及接口通信流程,研究在Microsoft Visual Studio 2008环境下,运用Visual C #调用Windows API 函数方法进行USB接口通信程序设计的一般方法。 关键字:C#USB通信接口 中图分类号:TP311.1文献标识码:A文章编号:1007-9416(2010)08-0090-02 1 HID、...

基于Visual C sharp 的USB接口通信程序设计
基于Visual C sharp 的USB接口通信程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 基于Visual C#的USB接口通信程序设计,应用研究, 覃冬华 约5149字 摘 要:详细介绍了USB接口的特点以及接口通信流程,研究在Microsoft Visual Studio 2008环境下,运用Visual C #调用Windows API 函数方法进行USB接口通信程序设计的一般方法。 关键字:C#USB通信接口 中图分类号:TP311.1文献标识码:A文章编号:1007-9416(2010)08-0090-02 1 HID、USB介绍 HID(Human Interface Device)类设备即人机接口设备,是USB设备类型中的一种,是直接与人交互的设备,如键盘、鼠标等。HID类设备并不一定是标准的外设类型,只要交换的数据格式存储在报文的结构中,并且设备固件支持报文的格式,则任何工作在该限制之内的设备均可称为HID设备,如电压计、温度计、读卡器等。 HID设备与主机交换数据使用“报 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ”结构,报 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 式富有弹性,可以处理任何类型的数据;一个报表可以使用多个事务,每笔事务可以携带小量和中量的数据,高速设备每笔事务最大是1024 B;主机定时轮询设备,设备可以为预期的时间传送信息给主机,HID设备除了传送数据给主机外,也会从主机接收数据。 USB协议定义和支持音频设备类、通信设备类、显示设备类、人机接口设备类(HID)和海量存储设备类等设备类型。HID是Windows完全支持的第一批USB设备类型,在运行Win 98以上版本的PC机上,应用程序可以与使用操作系统内置驱动的HID类设备通信。因此,基于HID类设计的USB设备易于设置和运行。 2 USB人机通信开发方法 HID运行在WINDOWS98以上版本操作系统的PC机中,系统除了提供通用的USB设备的底层驱动以外,还单独提供了一些hid设备的完整驱动,应用程序可以很容易的与操作系统内部的hid通讯。这样使得符合hid类的USB设备很容易开发与运行。也就是说,我们如果想实现一个USB的HID类设备,不需要在Windows下开发自己的驱动程序。 USB设备通信开发是在程序中调用一系列Windows API函数(以下简称API函数),通过系统自带的HID驱动程序访问HID设备。Windows提供了API函数来启动应用程序与设备驱动程序之间的通信,可以使用任何能访问API函数的编程语言,如VB,C/C++,C#,Delphi等编写的应用程序,在设备驱动程序的支持下,调用ReadFile、WriteFile等API函数来对USB设备进行读写操作。Windows用来与HID设备通信的API函数,包含在hid.dll、setupapi.dll、kernel32.dll 3个dll文档中,分别起到与HID设备通信、寻找与识别设备、交换数据的作用。 USB人机通信可以概括为查找HID设备接口、识别HID设备、取得设备接口路径、获取设备接口详细信息、打开设备、设备读写操作等部分。 3 Visual C#实现USB接口通信程序设计实例 本文的通信程序在Windows2003环境下使用Microsoft Visual Studio 2008进行开发,下面进行详细介绍。 3.1 启动Microsoft Visual Studio 2008,新建一个项目类型为Visual C #的 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 。 3.2 调用HidD_GetHidGuidD函数获取设备的标识符(GUID) 在计算机系统中可能存在多个HID设备,在实现通信前程序首先要做的是找到所需要的HID设备。在Windows系统中,所有的HID设备都属于HID类设备。HID类设备是通过GUID在系统中唯一标识的,它是一个128 位值,每一位唯一表示了一个对象。调用函数HidD_GetHidGuid可获得HID类设备的标识,通过这个API 函数就可以从系统中读取该值,下面程序代码是C#调用windows的AP的函数获得GUID [DllImport("hid.dll")]//使用DllImportAttribute特性来引入api函数 public static extern void HidD_GetHidGuid(ref Guid HidGuid); Guid guidHID = Guid.Empty; GUID结构体声明如下: typedef struct GUID { long Data1; shart Data2; shart Data3; char Data4 }; 3.3 获取已经连接的HID信息结构体数组 HidD_GetHidGuid使得应用程序获得一个系统的HID信息GUID,然后调用setupDiGetclassDevs函数,将上一步获得到的GUID结构作为参数传入,将返回一个包含所有已连接并检测通过的HID,该值包含其信息的结构数组的地址,它在下一个将要调用的函数SetupDiEnumDevicelnterfaces中将使用到。下面是C#调用API函数获得HID信息 [DllImport("setupapi.dll", SetLastError = true)] public static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, uint Enumerator,IntPtr HwndParent, DIGCF Flags); IntPtr hDevInfo; 3.4 识别每个HID接口 利用setupDiGetclassDevs函数的返回值DevlnfoSet得到一个指向设备信息集的句柄,即所有已连接并检测过的HID。函数返回的设备信息集包含所有当前安装在系统上且匹配所给参数的设备。将这个指针作参数循环调用SetupDiEnumDeviceInterfaces函数,每一次调用可以获得设备信息集中一个设备接口的信息: SetupDiEnumDevicelnterfaces( DevlnfoSet, //设备信息集句柄 NULL, //获得设备信息集中所有接口的信息 &HIDGUID,//HID类设备GUID结构体的地址 HIDlndex,//以0开始的接口索引号 &DevlnterfaceData//设备接口数据结构体的地址 ); 下面为C#调用API函数识别HID接口获取设备,当返回值为true时获取成功, [DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr hDevInfo, IntPtr devInfo, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData); public struct SP_DEVICE_INTERFACE_DATA { public int cbSize ;
本文档为【基于Visual C sharp 的USB接口通信程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_435706
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:4
分类:互联网
上传时间:2017-08-31
浏览量:74