虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

室内覆盖

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代码指明METHOD_BUFFERED,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,这里放的是包含有执行操作命令的字符串指针  0, FirmwareRev,      //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    标签: 驱动程序 应用程序 接口

    上传时间: 2013-10-17

    上传用户:gai928943

  • 单片机在工业无线网络中的具体应用

     如同今天的许多通用单片机(MCU)已经把USB、CAN和以太网作为标准外设集成在芯片内部一样,越来越多的无线网络芯片和无线网络解决方案也在向集成SoC 方向发展,比如第一代产品,Nordic公司nRF905,Chipcon公司cc1010 他们集成了8051兼容的单片机.这些无线单片机适合一般的点对点和点对多点的私有网络应用,如单一产品的遥控器和抄表装置等。无线通讯技术给智能装置的互连互通提供了便捷的途径,工业无线网络作为面向工业和家庭自动化的网络技术也正在向着智能,标准和节能方向发展。  目前在工业控制和消费电子领域使用的无线网络技术有ZigBee、无线局域网(Wi-Fi)、蓝牙(Blutooth)、GPRS通用分组无线业务、 ISM、IrDA等, 未来还能有3G、超宽频(UWB)、无线USB、Wimax等。 当然还有大量的私有和专用无线网络在工业控制和消费电子装置中使用,其中ZigBee、GPRS是在目前在国内工业控制中讨论和使用比较多的两种,蓝牙和无线局域网是在消费电子产品如手机、耳机、打印机、照相机和家庭中小企业网络中广泛使用的无线协议(个别工业产品也有应用,如无线视频监控和汽车音响系统),当然私有无线网络技术和产品在工业也有很多的应用。  ZigBee是一个低功耗、短距离和低速的无线网络技术,工作在2.4GHz国际免执照的频率,在IEEE标准上它和无线局域网、蓝牙同属802家族中的无线个人区域网络, ZigBee是有两部分组成,物理和链路层符合IEEE802.15.4, 网络和应用层符合ZigBee联盟的规范。ZigBee联盟是在2002年成立的非盈利组织,有包括TI、霍尼威尔、华为在内两百多家成员, ZigBee联盟致力推广兼容802.15.4和ZigBee协议的平台, 制定网络层和应用架构的公共规范,希望在楼宇自动化、居家控制、家用电器、工业自动控制和电脑外设等多方面普及ZigBee标准。  GPRS是在现有的GSM 网络发展出来的分组数据承载业务,它工作在标准的GSM频率,由于是一个分组交换系统,它适合工业上的突发,少量的数据传输,还因为GSM网络覆盖广泛,永远在线的特点,GPRS特点适合工业控制中的远程监控和测量系统。在工业控制应用中GPRS 芯片一般是以无线数传模块形式出现的,它通过RS232全双工接口和单片机连接,软件上这些模块都内置了GPRS,PPP和TCP/IP协议,单片机侧通过AT指令集向模块发出测试,连接和数据收发指令,GPRS模块通过中国移动cmnet进入互联网和其他终端或者服务器通讯。目前市场常见的模块有西门子G24TC45、TC35i,飞思卡尔G24,索爱GR47/48, 还有Wavecom 的集成了ARM9核的GPRS SoC模块WMP50/100。GPRS模块有区分自带TCP/IP协议和不带协议两种,一般来讲,如果是单片机侧有嵌入式操作系统和TCP/IP协议支持的话或者应用的要求只是收发短信和语音功能的话,可以选择不带协议的模块。  先进的SoC技术正在无线应用领域发挥重要的作用。德州仪器收购了Chipcon公司以后发布的CC2430 是市场上首款SoC的ZigBee单片机, 见图1,它把协议栈z-stack集成在芯片内部的闪存里面, 具有稳定可靠的CC2420收发器,增强性的8051内核,8KRAM,外设有I/O 口,ADC,SPI,UART 和AES128 安全协处理器,三个版本分别是32/64/128K的闪存,以128K为例,扣除基本z-stack协议还有3/4的空间留给应用代码,即使完整的ZigBee协议,还有近1/2的空间留给应用代码,这样的无线单片机除了处理通讯协议外,还可以完成一些监控和显示任务。这样无线单片机都支持通过SPI或者UART与通用单片机或者嵌入式CPU结合。 2008年4月发表CC2480新一代单片ZibBee认证处理器就展示出和TI MSP430 通用的低功耗单片机结合的例子。图1 CC2430应用电路  工业控制领域的另一个芯片巨头——飞思卡尔的单片ZigBee处理器MC1321X的方案也非常类似,集成了HC08单片机核心, 16/32/64K 闪存,外设有GPIO, I2C和ADC, 软件是Beestack 协议,只是最多4K RAM 对于更多的任务显得小了些。但是凭借32位单片机Coldfire和系统软件方面经验和优势, 飞思卡尔在满足用户应用的弹性需求方面作的更有特色,它率先能够提供从低-中-高各个层面的解决方案,见图2。

    标签: 单片机 工业无线网络

    上传时间: 2013-11-02

    上传用户:momofiona

  • 高级FPGA设计 结构、实现和优化

      高级FPGA设计结构、实现和优化   作者:(美)克里兹著,孟宪元译;出版社:机械工程出版社   学FPGA不一定需要开发板,自己学会modelsim仿真、写testbench,用PC机仿真就能有不少长进。这些都看完,剩下的就靠做项目自己领悟,再加上高手指点。   《高级FPGA设计:结构、实现也优化》以FPGA设计为主题,覆盖了实践过程中最可能遇到的深层次问题,并提供了经验指导。在某些方面,《高级FPGA设计:结构、实现也优化》能够取代有限的工业经历,免去读者学习的困难。这种先进的、实用的方法,成为此书的特色。

    标签: FPGA

    上传时间: 2013-11-01

    上传用户:zhaiyanzhong

  • 基于SCT3918的CDMR数字对讲机设计

    为了响应国家工业和信心产业部[2009]666号文件我国数字对讲机实现模拟转数字化的要求,并且为了方便企业生产和调试、降低成本的目的。采用国产基带芯片SCT3918设计了一款适应我国国情的数字对讲机CDMR(China Digital Mobile Radio),在实验室内做了射频技术指标测试、音频技术指标测试、可靠性测试,实验结果表明射频技术指标符合[2009]666号文件要求,音频技术指标符合《移动通信调频无线电话机通用技术条件》,设计符合我国对讲机模拟转数字的政策、适合我国的国情、便于企业生产和调试。

    标签: 3918 CDMR SCT 数字对讲机

    上传时间: 2013-10-18

    上传用户:caozhizhi

  • 铁路信号室内综合防雷

    随着铁路运输装备技术水平的不断提高,计算机集成技术、接口技术、及通信技术在铁路信号系统中广泛应用。铁路信号系统对雷电的防护要求也就越来越高。根据站场中信号设备的分布的特点,利用现代防雷手段,对铁路信号系统综合防雷,提高信号系统运行的可靠性与稳定性

    标签: 铁路信号 防雷

    上传时间: 2014-12-29

    上传用户:ArmKing88

  • 可编程FM锁相发射机的实现

    文中设计了一种可编程的FM锁相发射机。利用Atmega8实现与计算机的串口通信,实现对锁相环芯片和数字电位器的配置,达到改变输出频率和调制频偏的目的。发射机输出频率覆盖2 200~2 300 MHz,调制响应100 Hz~3.5 MHz,能够满足大部分FM体制遥测系统的需要。

    标签: 可编程 发射机 锁相

    上传时间: 2013-10-23

    上传用户:181992417

  • CRTE一体化有线调度台

    北京中瑞特通讯设备有限公司( 简称CRTE) 为适应专业无线通信市场需求, 开发了一款可配合 MOTOTRBO 系统、MOTOTRBO-IP 互联系统、FLEXTRBO 系统、SUPOTRBO 系统、SUPOTRBO-PLUS 系统等使用的IP 互联有线调度设备。产品基于计算机设计,采用IP 方式与系统连接,可根据用户需要,放 置在有IP 网络延伸的地方,不受无线网络覆盖影响,可在任何有IP 网络的地方方便架设。 产品具有界面友好、操作简单、调度业务丰富等特点。

    标签: CRTE 调度

    上传时间: 2013-10-26

    上传用户:虫虫虫虫虫虫

  • 基于IEC61850标准的ACSI服务模型研究

    为了适应变电站自动化功能的需求,采用IEC6185O标准,使用抽象通信服务接口ACSI和特殊通信服务映射SCSM技术建立了ACSI的服务模型。所建立的ACSI服务模型基本覆盖变电站自动化系统的功能需要,。能提供对模型中的数据进行读写、取代、报告、记录等服务,实现了应用和通信的分离。

    标签: 61850 ACSI IEC 标准

    上传时间: 2013-11-25

    上传用户:牛津鞋

  • 中国移动多媒体广播(CMMB)测试接收机的设计

    为了加快 CMMB的推广和应用,全面评估CMMB网络的性能,尤其是测试CMMB的移动接收效果和城市覆盖效果,文中提出了一种基于CY7C68013A芯片的CMMB网络测试接收机的设计方案。本方案采用CY7C68013A芯片为控制核心,利用CY7C68013A芯片的GPIO口模拟的I2C、SPI总线通信接口和USB接口与PC机通信等技术,实现了CMMB信号参数存储、读取与CMMB码流播放同步进行的功能。

    标签: CMMB 中国移动 多媒体 广播

    上传时间: 2013-11-15

    上传用户:zhangyigenius

  • 短波通信原理

    尽管当前新型无线电通信系统不断涌现,短波这一古老和传统的通信方式仍然受到全世界普遍重视,不仅没有被淘太,还在快速发展。其原因主要有三:一、短波是唯一不受网络枢钮和有源中继体制约的远程通信手段,一但发生战争或灾害,各种通信网络都可能受到破坏,卫星也可能受到攻击。无论哪种通信方式,其抗毁能力和自主通信能力与短波无可相比;二、在山区、戈壁、海洋等地区,超短波覆盖不到,主要依靠短波;三、与卫星通信相比,短波通信不用支付话费,运行成本低。  近年来,短波通信技术在世界范围内获得了长足进步。这些技术成果理应被中国这样的短波通信大国所用。用现代化的短波设备改造和充实我国各个重要领域的无线通信网,使之更加先进和有效,满足新时代各项工作的需要,无疑是非常有意义的。  这里简要介绍短波通信的一般概念,优化短波通信的经验,以及一些热门的新技术,如有错误之处,欢迎阅正。1、短波通信的一般原理1.1.无线电波传播  无线电广播、无线电通信、卫星、雷达等都依靠无线电波的传播来实现。  无线电波一般指波长由100,000米到0.75毫米的电磁波。根据电磁波传播的特性,又分为超长波、长波、中波、短波、超短波等若干波段,其中:超长波的波长为100,000米~10,000米,频率3~30千赫;长波的波长为10,000米~1,000米,频率30~300千赫;中波的波长为1,000米~100米,频率300千赫~1.6兆赫;短波的波长为100米~10米,频率为1.6~30兆赫;超短波的波长为10米~1毫米,频率为30~300,000兆赫(注:波长在1米以下的超短波又称为微波)。频率与波长的关系为:频率=光速/波长。  电波在各种媒介质及其分界面上传播的过程中,由于反射、折射、散射及绕射,其传播方向经历各种变化,由于扩散和媒介质的吸收,其场强不断减弱。为使接收点有足够的场强,必须掌握电波传播的途径、特点和规律,才能达到良好的通信效果。常见的传播方式有:地波(地表面波)传播   沿大地与空气的分界面传播的电波叫地表面波,简称地波。地波的传播途径如图1.1 所示。其传播途径主要取决于地面的电特性。地波在传播过程中,由于能量逐渐被大地吸收,很快减弱(波长越短,减弱越快),因而传播距离不远。但地波不受气候影响,可靠性高。超长波、长波、中波无线电信号,都是利用地波传播的。短波近距离通信也利用地波

    标签: 短波 通信原理

    上传时间: 2013-11-13

    上传用户:box2000