如何用VC++编写USB通信程序

如何用VC++编写USB通信程序,第1张

你要首先知道要控制的USB设备的USB控制芯片的型号,根据USB控制芯片确定控制USB设备的驱动程序,然后找相关的USB控制芯片型号的资料,资料里面应该包括关于驱动程序的开发接口,知道开发接口后再使用VC引入,调用。

用vb实现USB接口设备数据传送

本文介绍了USB设备中的人机接口,HID设备与主机通信的要点与方式。详细讲解了在VB中调用相关APl函数的方法,并介绍了一种基于USB总线的数据采集系统的设计方案及开发方法,采用的是USB2.0协议。该系统主要是从设备的角度描述了人机接口设备通信,以及用来与主机进行数据交换的报告格式。应用程序可以使用任何能访问API函数的编程语言,调用窗口函数并与USB设备实现通信。掌握USB设备与计算机通讯规程,实现USB设备的自动识别。为数据采集系统与计算机之间的通讯开辟了新的道路。

这几年,随着大量支持USB的个人电脑的普及,USB逐步成为PC机的标准接口已经是大势所趋了。在主机(host)端,最新推出的PC机几乎100%支持USB而在外设(device)端,使用USB接口的设备也与日俱增,例如数码相机、扫描仪、游戏杆、磁带和软驱、图像设备、打印机、键盘、鼠标等。

二、Windows系统选择USB驱动的过程

当Windows检测到一个新的USB外设时,必须做的一件事情是找出应该使用哪个设备驱动应用软件来与设备通信,然后载入选定的驱动。这是Windows设备管理器的工作,设备管理器使用类、设备安装器和INF文件来找到这个匹配。

INF文件是一个文本文件,其中包括有利于Windows识别设备的信息。文件告诉Win-dows要使用什么驱动、注册表里存储什么信息等。

三、Visual Basic与USB设备通信的设计与实现

使用VB语言访问串行通信接口的方法。Windows在底层实现了和串行通信有关的很多复杂的工作,给程序员提供了一个相对比较容易掌握的编程接口。例如 Windows自动将所有接收到的字符放到接收缓冲区中,而所有发送的字符也都进入发送缓冲区。只要程序空闲,程序就可以读取接收缓冲区获得数据,或者向发送缓冲区发送数据。

1.主机寻找USB设备的过程

第一个被Windows支持的USB外围设备类是人机接口设备。HID是 HUMANINTER-FACE DEVICE人机接口设备的英文缩写。是指直接和人进行互动的设备。如鼠标、键盘等。运行在WINDOWS98或其他更高的版本的 *** 作系统的PC机,系统除了提供通用的USB设备的底层驱动以外,还单独提供了一些HID设备的完整驱动,应用程序可以很容易地与 *** 作系统内部的HID通讯。这样使得符合HID 类的USB设备很容易开发与运行。也就是说,我们如果想实现一个USB的HID类设备,是不需要在Windows下开发自己的驱动程序的。HID不一定要是标准的外设类型,唯一的要求是交换的数据存储在报文的结构内,设备固件必须支持报文的格式。任何工作在该限制之内的设备都可以成为一个HID,例如温度计、电压计、读卡机等。

2.VB中调用API函数的过程

(1)声明:下面是一个Visual Basic使用API函数WriteFile的声明:可以利用这个涵数来写数据到HID(也可以是文件和其他设备)中。Public Declare Function WriteFile Lib_“kernel32”_

(By Val hFile As Long,_ByReflpBuffer As Byte,_By Val nNumberOfBytes To Write As Long,_ByRef lpNumberOfBytesWritten As Long,_ByVal lpOvefiapped As Long)_As Long

(2)识别HID过程Public Declare Function HidD_GetHidGuid Lib_“hid.dll”_(ByRefHidGuid As GUID)As Long

3.Visual Basic数据过程

(1)读数据到设备

Public Declare Function WriteFile Lib“kernel32”_(ByVal hFile As Long,_ByReflpBuffer As Byte_ByValnNumberOfBytesToWrite As Long,_ByRefnNumberOfBytcsWritten As Long,_ByVal lpOvefiapped As Long)_As Long

(2)从设备读取数据Declare Function ReadFile Lib_“kernel32”_(ByValhFile As Long,_ByReflpBuffer As Byte,_ByValnNumberOfBytesToRead As Long,_ByReflpNumberOfBytesRead As Long,_lpOvefiapped As Long)_As Long

读写报文缓冲区时,第一个字节是ReportID,其后是报文数据。报文缓冲区默认是八个报文,并且环状排列。因为数据读写是发生在主机轮训设备的时候,并不是由设备触发产生硬件中断,所以如不能及时读写,新的数据会覆盖旧的数据,导致报文丢失。当数据读写频繁时应使用特征报文,它可以保证当报文数据没有变化时,HID不会传送新的数据。

当不再使用SetupDiGetClassDevs时,应用上述函数释放其返回的数组hDevInfo。还有需要使用函数CloseHandle,它是一个非常通用的API函数,可以用于关闭通信。

四、结论

实际编程表明使用VB开发HID类USB设备是一条非常方便快捷的途径,不需要编写底层驱动,涉及到的API函数多是大家熟知的通用函数。但同时还必须注意到一点,HID类只支持控制传输与中断传输。控制传输通常不用于数据的传输,而中断传输的特点是保证最大延迟,也就是事务之间的时间。它没有保证传输速率,而是保证每笔事务之间的时间不会超过最大延时。所以中断传输适用于数据量不太大,但需要及时快速地传送,实时性要求较高的场合。对于数据量比较大的传输,是不宜使用中断传输的。因此HID设备应用的场合也必须根据该特点灵活使用。

USB(Universal Serial Bus),即通用串行总线。本节所介绍的USB Link电缆连接方式,便是利用计算机的USB接口,实现双机的互联功能。

一、关于USB Link电缆

市面上有多种USB Link电缆,不同种类和型号的电缆其功能略有不同,本文向大家介绍一款名为USB Link—100的双机互联电缆,其他类型USB Link电缆的安装和使用方法与它基本相同。

1.USB Link电缆的特点

USB Link—100电缆貌似一条普通的USB接口连接电缆,但中间多了一个“包”。USB Link—100的核心功能就集中在这个“包”中。从严格意义上讲,USB Link—100电缆应该称之为USB Data Bridge Cable(USB数据桥电缆),它是一条通过USB接口连接的双机连接线。它的功能是实现两台计算机之间的连接,并互享对方的资源,这些资源包括文件、软驱、光驱和打印机。通过USB Link—100连接后,对方计算机上几乎所有的资源都可以被共享,这与网卡连接、直接电缆连接和MODEM连接等方式有很大的区别。

值得提醒大家的是:有些用户可能会通过普通USB电缆来连接两台计算机,其实这种做法是非常危险的,很有可能会损坏主板。即使没有损坏主板,使用这种方法也无法实现两台计算机之间的互联。不过,最近新出的某些型号的主板上已经集成了USB连结功能,如微星(MSI)的815EP-PRO等主板,只需普通USB电缆就可实现双机互连。

2.USB Link电缆对计算机硬件的要求

因为USB Link电缆必须要通过USB接口连接,所以被连接的两台计算机上都应同时具有USB接口。近一两年来购置的计算机大都能够满足此要求。如果您的计算机上没有USB接口,却一定要使用USB Link电缆进行连接,则需要购买一块USB接口卡。再将USB接口卡安装在一台Intel 486DX—66以上的电脑上,使能保证使用USB Link电缆进行连接。

3.USB Link电缆对 *** 作系统的要求

在使用USB设备时,首先要保证 *** 作系统能够支持USB连接功能。因为USB接口标准的推出时间相对较晚,所以只有Windows 95 0SR2.1、Windows 98、Windows NT4.0、Windowe Me和Windows 2000提供支持。

二、USB Link电缆的安装

USB Link电缆的安装包括硬件的安装和软件的安装两部分,其中软件部分使用一个独立的名为SMART—Linq的程序。在两次安装中都要用到随电缆所附带的一张软盘。

1.USB Link—100电缆的安装

USB设备支持即插即用和热插拔功能,USBLink—100也不例外。所以,只要需要,随时都可以将它插入计算机的USB接口上。此时,计算机就会自动分配地址,用户不需要进行任何物理参数的设置。并且,USB设备的连接可以在开机状态下直接进行,不需要关闭计算机的电源。不过,在计算机的软、硬件都能满足USB功能的前提下,还要保证在CMOS参数设置中,将USB一项设置为有效(Enable)状态。如果设置为禁止(Disable)状态,USB设备将无法工作。

当第一次接入USB Link—100电缆时,系统会提示发现新硬件,接着出现安装向导。将随电缆附带的一张软盘插入软驱中接着选择“自动搜索更好的驱动程序”一项,系统便从软盘读取所需的信息,接着出现选择USB BridgeCable的对话框。如果在Windows 95 0SR2.1/98/Me中安装,则选择对话框中的第二项(A:\WIN95\USBBC95.INF);如果在WindowsNT4.0下安装,可选择第三项(A:\USBBC.INF);A:\WIN2000\USBBC20.INF是提供给Windows 2000 *** 作系统的。选择好对应的驱动程序名后,单击“完成”按钮,系统将从软盘复制所需的驱动程序,最后出现提示信息,单击“完成”结束。在另一台计算机上用同样的方法进行硬件的安装。

2.SMART—Linq程序的安装

SMART—Linq程序的安装方法非常简单,只须双击软盘中的setup.exe文件,一路“next”下去即可。安装结束后,在“开始/程序”的下一级菜单中将会出现一个名为“PC—Linq”的菜单项,通过选择该菜单下的项目便可进行有关的 *** 作。同时,安装程序还会在桌面上建立一个PC—Linq的快捷菜单。在另一台计算机上用同样的方法安装SMART—Linq程序。

三、双机互联的应用

经过以上硬件和软件的安装和设置后,用户就可以使用USB Link电缆进行两台计算机之间的通信了。包括文件的传输、共享对方计算机上的资源等。分别在两台计算机上运行SMART—Linq程序(双击桌面上的PC—Linq图标或选择“开始/程序/PC—Linq”菜单下的“PC—Linq”功能项),将出现与Windows *** 作系统中的“资源管理器”很相似的 *** 作窗口,只是PC—Linq窗口由上下两部分组成:一般上半部分显示的是本地计算机(Local Machine)上的资源,而下半部分显示的是远程计算机(Remote Machine)上的资源。两台计算机之间的 *** 作都在这个窗口中进行。

1.文件 *** 作功能

像Windows下的“资源管理器”一样,PC—Linq窗口中的 *** 作同样支持复制、粘帖、创建、删除和直接拖曳等功能。概括地说,PC—Linq的功能基本上是对“资源管理器”的克隆。只不过“资源管理器”只能管理本地计算机上的资源,而PC—Linq窗口却能同时管理两台计算机上的资源。

2.共享对方计算机上的资源

除以上所介绍的常用功能外,在PC—Linq窗口中还可以共享另一台计算机的软驱、光驱、文件和打印机等资源。其中,共享对方的软驱、光驱和打印机时,无论从 *** 作方式还是从速度上看,与在本地计算机上几乎没有什么区别;如果对方计算机上的应用程序没有严格的链接要求,一般都能通过调用在本地计算机上运行。其他的如WAV、MP3及一些文本文件都可以直接在本地计算机上顺利地调用。

在从计算机上拔掉USB Link电缆之前一定要先关闭本地的PC—Linq窗口,否则会因终断连接而产生蓝屏,甚至是死机。

四、USB Link电缆双机互联的优、缺点

1.使用方便, *** 作简单

USB Link电缆的软硬件安装都很方便,几乎不需要任何与网络有关的知识。使用时,只需要将两台计算机连接起来,分别运行SMART—Linq程序后就可以进行两台计算机之间的任何 *** 作,而不需要其它的设置。这很适合于笔记本电脑之间、笔记本电脑与台式机之间的连接。因为在这些连接中,其中至少有一方经常是不固定的。

双机通过USB Link电缆互联后,两台计算机几乎可以被看做一台计算机来使用。即使对方(包括本地)计算机上的文件和文件夹已设置了“隐藏”属性,在PC—Linq窗口中都会全部“暴露”出来。这在方便 *** 作的同时,也使对方的计算机连一点“隐私”都没有。另外,连接双方不存在主机和客户机之分,两台被连接计算机的功能和地位是同等的。

2.连接速度相对较快

本节中所使用的USB Link电缆的连接速度在说明书上标明为4Mbps(目前市面上的同类设备一般都达到了8Mbps)。此速度虽然是USB接口的最低速度(USB接口提供的速度范围是4—12Mbps),但与通过并口、串口及MODEM连接相比,即使是4Mbps的连接速度也已经远远高出了许多。这种连接速度,已基本能够满足两台计算机之间如文件传输、共享资源等日常需要。

3.连接距离短,价格较高

USB Link电缆的长度一般不超过3米,这对于紧邻的两台计算机来说也许已经够用了,但当两台计算机之间的距离较远(如位于不同的房间)时,就无能为力了。而且,此类电缆又没有提供可选的加长电缆或设备。另外,每根300元上下的售价,使用户感觉到有些物非所值。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7792248.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存