新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 基于VC的USB接口通信程序设计

基于VC的USB接口通信程序设计

作者:朱 丽,陈钟荣,张秀再时间:2008-05-16来源:《电子工程师》

  2.2.3 标准事件处理程序

本文引用地址:http://www.eepw.com.cn/article/82700.htm

  驱动器初始化后,启动标准事件处理程序负责处理枚举过程和异步USB事件。事件处理程序使用控制端口0,直到完成枚举过程。当USB应用程序处于非活动状态时,除控制端口0以外端口均不可访问。事件处理程序在端口0上执行控制操作,响应USB标准请求,并负责通知USB应用程序枚举完成和活动状态,USB事件通过回调传递到USB外设应用程序。当对USB端口枚举操作完成,USB应用程序就可打开并使用USB端口。

  3客户应用软件

  开发系统应用软件的底层,需要极好的兼容性和稳定性。对于广大用户而言,与系统的交互是通过应用程序实现的,因此,如何设计出运行效率高、界面友好、稳定性高的应用程序是至关重要的因素。。++是开发Windows应用程序的主流开发工具,充分利用它的面向对象特性的C++和功能强大的MFC来开发专业级的应用程序,MFC是一个强大的、扩展的C++类层次结构,它能使开发Windows应用程序变得更加容易,而且在整个Windows家族中都是兼容的。Lab-Windows/CVI是以ANSI c为核心的交互式虚拟仪器开发环境,它将功能强大的C语言与测控技术有机结合,具有灵活的交互式编程方法和丰富的库函数。本设计就是采用Visual C++6.0和LabWindows/CV提供的Graph控件来开发应用程序的,应用程序的主要功能有:打开/关闭USB设备,检测USB设备,实现向USB设备发送指定数量的数据。

  下面是各部分的一些代码及说明:

  1)查找、打开USB设备

       

  2)线程(Thread)

  线程就是程序中单独顺序的流控制。线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其他线程共享该进程所拥有的全部资源。图3是线程的状态转换图。

        
 
  线程被分为两种:用户界面线程和工作线程(又称为后台线程)。本程序设计主要使用工作线程来执行数据的读写操作等,它与用户界面线程的区别是不用从CWinThread类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。

  对于工作线程来说,启动一个线程,首先需要编写一个希望与应用程序的其余部分并行运行的函数,如Fun(),接着定义一个指向CWinThread对象的指针变量*pThread,调用AfxBeginThread(Fun,param,priori-ty)函数,返回值赋给pThread变量的同时启动该线程执行上述Funl()函数,其中Fun是线程要运行的函数的名字,亦即控制函数的名字,param是准备传送给线程函数Fun的任意32位值,priority是定义该线程的优先级别,是预定义的常数,可参考MSDN。

  本程序设计中的关键代码如下:

       

  4实例

  本例中使用了LabWindows/CVI的Graph图形显示控件,用来显示各类信号波形,如普通连续波信号波形、单载频矩形脉冲信号波形、调频(非线性调频)脉冲压缩信号波形和二相编码波形等。图4为各类信号波形图。这些信号均为数据采集系统的测试信号,可由DDS(直接数字频率合成器)芯片AD9858实现。

  将图4中各类信号波形的频率、宽度、幅度和载频信号频率等参数读出来,分别进行一些计算,将计算出的结果通过USB口传送到DDS来产生波形;其他公共参数如"DDS时钟频率"根据实际采用的时钟频率设置。比如线性调频信号,一般关心的是一个信号的带宽、起始频率和调频斜率这3个值。这3个参数其实就是信号波形中的起始频率fs、终止频率f0和持续时间t,它们是等价的,现在把这些参数的值从测试信号波形中读出来,然后代入下式:DFRRW(8(f0-fs)/t)×231/SCLK。式中:SCLK是DDS的时钟频率,它的值设为1 GHz;DFRRW为步进频率斜率控制字,它的值设为1,代表每8 ns更新一次。最后把计算出的DFTW(步进频率调节字)值通过USB口传送到DDS。

        

  另外,二相编码的实现是通过控制DDS的POW(相位补偿字)来实现的,通过改变PSO和PS1的值,就可以改变信号的相位,而且相位的改变可以是绝对调相和相对调相。这里使用了4个工作组,其中2个工作组的POW为0,另外2个工作组中的POW为π。将上面测试信号波形中的参数读出来,代人POW=214W/360中,其中W为波形的相位值,再把计算出的POW值通过USB口传送到DDS即可。

  5结束语

  本设计中使用的USB2.0作为部分,具有接口简单、传输速率高和即插即用等特点;应用程序充分利用的MFC框架的比较丰富的资源和LabWin-dows/CVI丰富的库函数,在进行数据采集和控制时,具有界面友好、兼容性和工作可靠、稳定等特点。经实际运用证明,本设计合理,使用方便,在数据采集过程中,很容易实现高速度传输数据并进行分析处理。

tcp/ip相关文章:tcp/ip是什么



上一页 1 2 下一页

评论

技术专区

关闭