软件产品帮助文档

Size: px
Start display at page:

Download "软件产品帮助文档"

Transcription

1 北京阿尔泰科技发展有限公司 USB2812 WIN2000/XP 驱动程序使用说明书 请您务必阅读 使用纲要, 他会使您事半功倍! 目 录 USB2812 WIN2000/XP 驱动程序使用说明书...1 第一章版权信息与命名约定...2 第一节 版权信息...2 第二节 命名约定...2 第二章使用纲要...2 第一节 如何管理 USB 设备...2 第二节 如何批量取得 AD 数据...2 第三节 哪些函数对您不是必须的...4 第三章 USB 设备专用函数接口介绍...5 第一节 设备驱动接口函数列表 ( 每个函数省略了前缀 USB2812_ )...5 第二节 设备对象管理函数原型说明...6 第三节 AD 采样操作函数原型说明...10 第四节 AD 硬件参数系统保存与读取函数原型说明...13 第五节 DA 模拟量输出操作函数原型说明...15 第六节 CNT 计数与定时器操作函数原型说明...15 第七节 DIO 数字开关量输入输出简易操作函数原型说明...17 第四章硬件参数结构...18 第五章数据格式转换与排列规则...22 第一节 AD 原始数据 LSB 转换成电压值 Volt 的换算方法...22 第二节 AD 采集函数的 ADBuffer 缓冲区中的数据排放规则...22 第三节 DA 电压值转换成 LSB 原码数据的换算方法...23 第六章上层用户函数接口应用实例...24 第一节 简易程序演示说明...24 第二节 高级程序演示说明...24 第七章基于 USB 总线的大容量连续数据采集详述...24 第八章公共接口函数介绍...26 第一节 公用接口函数总列表 ( 每个函数省略了前缀 USB2812_ )...27 第二节 线程操作函数原型说明...27 第三节 文件对象操作函数原型说明...29 第四节 各种参数保存和读取函数原型说明...33 第五节 其他函数原型说明...35 提醒用户 : 通常情况下,WINDOWS 系统在安装时自带的 DLL 库和驱动不全, 所以您不管使用那种语言编程, 请您最好先安装上 Visual C++6.0 版本的软件, 方可使我们的驱动程序有更完备的运行环境 有关设备驱动安装和产品二次发行请参考 USB2812Inst.doc 文档 1

2 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 第一章版权信息与命名约定 第一节 版权信息 本软件产品及相关套件均属北京市阿尔泰科贸有限公司所有, 其产权受国家法律绝对保护, 除非本公司书 面允许, 其他公司 单位及个人不得非法使用和拷贝, 否则将受到国家法律的严厉制裁 您若需要我公司产品 及相关信息请及时与我们联系, 我们将热情接待 第二节 命名约定 一 为简化文字内容, 突出重点, 本文中提到的函数名通常为基本功能名部分, 其前缀设备名如 USBxxxx_ 则被省略 如 USB2815_CreateDevice 则写为 CreateDevice 二 函数名及参数中各种关键字缩写规则 缩写 全称 汉语意思 缩写 全称 汉语意思 Dev Device 设备 DI Digital Input 数字量输入 Pro Program 程序 DO Digital Output 数字量输出 Int Interrupt 中断 CNT Counter 计数器 Dma Direct Memory 直接内存存取 DA Digital convert 数模转换 Access to Analog AD Analog convert to Digital 模数转换 DI Differential ( 双端或差分 ) 注 : 在常量选项中 Npt Not Empty 非空 SE Single end 单端 Para Parameter 参数 DIR Direction 方向 SRC Source 源 ATR Analog Trigger 模拟量触发 TRIG Trigger 触发 DTR Digital Trigger 数字量触发 CLK Clock 时钟 Cur Current 当前的 GND Ground 地 OPT Operate 操作 Lgc Logical 逻辑的 ID Identifier 标识 Phys Physical 物理的 以上规则不局限于该产品 第二章使用纲要 第一节 如何管理 USB 设备由于我们的驱动程序采用面向对象编程, 所以要使用设备的一切功能, 则必须首先用 CreateDevice 函数创建一个设备对象句柄 hdevice, 有了这个句柄, 您就拥有了对该设备的控制权 然后将此句柄作为参数传递给其他函数, 如 InitDeviceAD 可以使用 hdevice 句柄以初始化设备的 AD 部件并启动 AD 设备,ReadDeviceAD 函数可以用 hdevice 句柄实现对 AD 数据的采样批量读取,SetDeviceDO 函数可用实现开关量的输出等 最后可以通过 ReleaseDevice 将 hdevice 释放掉 第二节 如何批量取得 AD 数据 当您有了 hdevice 设备对象句柄后, 便可用 InitDeviceAD 函数初始化 AD 部件, 关于采样通道 频率等的参数的设置是由这个函数的 padpara 参数结构体决定的 您只需要对这个 padpara 参数结构体的各个成员简单赋 2

3 北京阿尔泰科技发展有限公司值即可实现所有硬件参数和设备状态的初始化, 然后这个函数启动 AD 设备 接着便可用 ReadDeviceAD 反复读取 AD 数据以实现连续不间断采样当您需要关闭 AD 设备时,ReleaseDeviceAD 便可帮您实现 ( 但设备对象 hdevice 依然存在 ) ( 注 :ReadDeviceAD 虽然主要面对批量读取, 高速连续采集而设计, 但亦可用它以少量点如 32 个点读取 AD 数据, 以满足慢速采集需要 ) 具体执行流程请看下面的图 注意 : 图中较粗的虚线表示对称关系 如红色虚线表示 CreateDevice 和 ReleaseDevice 两个函数的关系是 : 最初执行一次 CreateDevice, 在结束是就须执行一次 ReleaseDevice 绿色虚线 InitDeviceAD 与 ReleaseDeviceAD 成对称方式出现 3

4 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 开始 创建设备对象 CreateDevice() 重新初始化 AD 初始化和启动 AD InitDeviceAD() 读取 AD 数据 ReadDeviceAD () 接着上次再读 AD 数据 用户对采集到的 AD 数据进行处理其代码应由用户根据需要编写 需要再紧接着读取 AD 数据以实现连续采集吗? 是 否 释放和停止 AD 设备 ReleaseDeviceAD() 需要改变通道或频率后再采集吗? 释放设备对象 ReleaseDevice() 不需要 结束 图 AD 采集实现过程第三节 哪些函数对您不是必须的当公共函数如 CreateFileObject,WriteFile,ReadFile 等一般来说都是辅助性函数, 除非您要使用存盘功能 它们只是对我公司驱动程序的一种功能补充, 对用户额外提供的 4

5 北京阿尔泰科技发展有限公司 第三章 USB 设备专用函数接口介绍 第一节 设备驱动接口函数列表 ( 每个函数省略了前缀 USB2812_ ) 本章函数是设备使用 USB 方式传输时所使用的 函数名函数功能备注 1 设备对象操作函数 CreateDevice 创建 USB 对象 ( 用设备逻辑号 ) CreateDeviceEx 创建 USB 对象 ( 用设备物理号 ) 上层及底层用户 GetDeviceCount GetDeviceCurrentID 取得设备总数 取得设备当前 ID 号 ListDeviceDlg 列表所有同一种 USB 各种配置上层及底层用户 ResetDevice ReleaseDevice 2 AD 采样操作函数 InitDeviceAD ReadDeviceAD ReleaseDeviceAD 复位 USB 设备 关闭设备, 且释放 USB 总线设备对象 初始化 USB 设备 AD 部件, 准备传数 连续批量读取 USB 设备上的 AD 数据 释放 USB 设备对象中的 AD 部件 3 辅助函数 ( 硬件参数设置 保存 读取函数 ) LoadParaAD SaveParaAD 从 Windows 系统中读取硬件参数 往 Windows 系统保存硬件参数 ResetParaAD 将注册表中的 AD 参数恢复至出厂默认值上层用户 4 DA 输出操作函数 WriteDeviceDA 5 计数器操作函数 SetDeviceCNT GetDeviceCNT 6 开关量函数 GetDeviceDI SetDeviceDO 使用需知 Visual C++ & C++Builder: 输出模拟信号到指定通道 设置计数器的初值 取得各路计数器的当前计数值 开关输入函数 开关输出函数 首先将 USB2812.h 和 USB2812.lib 两个驱动库文件从相应的演示程序文件夹下复制到您的源程序文件 夹中, 然后在您的源程序头部添加如下语句, 以便将驱动库函数接口的原型定义信息和驱动接口导入库 (USB2812.lib) 加入到您的工程中 #include USB2812.H 在 VC 中, 为了使用方便, 避免重复定义和包含, 您最好将以上语句放在 StdAfx.h 文件 一旦完成了 以上工作, 那么使用设备的驱动程序接口就跟使用 VC/C++Builder 自身的各种函数, 其方法一样简单, 毫 无二别 关于 USB2812.h 和 USB2812.lib 两个文件均可在演示程序文件夹下面找到 5

6 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 首先将 USB2812.Bas 驱动模块头文件从 VB 的演示程序文件夹下复制到您的源程序文件夹中, 然后将此模块文件加入到您的 VB 工程中 其方法是选择 VB 编程环境中的工程 (Project) 菜单, 执行其中的 " 添加模块 "(Add Module) 命令, 在弹出的对话中选择 USB2812.Bas 模块文件即可, 一旦完成以上工作后, 那么使用设备的驱动程序接口就跟使用 VB 自身的各种函数, 其方法一样简单, 毫无二别 请注意, 因考虑 Visual C++ 和 Visual Basic 两种语言的兼容问题, 在下列函数说明和示范程序中, 所举的 Visual Basic 程序均是需要编译后在独立环境中运行 所以用户若在解释环境中运行这些代码, 我们不保证能完全顺利运行 首先将 USB2812.Pas 驱动模块头文件从 Delphi 的演示程序文件夹下复制到您的源程序文件夹中, 然 后将此模块文件加入到您的 Delphi 工程中 其方法是选择 Delphi 编程环境中的 View 菜单, 执行其中的 "Project Manager" 命令, 在弹出的对话中选择 *.exe 项目, 再单击鼠标右键, 最后 Add 指令, 即可将 USB2812.Pas 单元模块文件加入到工程中 或者在 Delphi 的编程环境中的 Project 菜单中, 执行 Add To Project 命令, 然后选择 *.Pas 文件类型也能实现单元模块文件的添加 最后请在使用驱动程序接口的源程 序文件中的头部的 Uses 关键字后面的项目中加入 : USB2812 如 : uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, USB2812; // 注意 : 在此加入驱动程序接口单元 USB2812 LabView / CVI: LabVIEW 是美国国家仪器公司 (National Instrument) 推出的一种基于图形开发 调试和运行程序的集成化环境, 是目前国际上唯一的编译型的图形化编程语言 在以 PC 机为基础的测量和工控软件中, LabVIEW 的市场普及率仅次于 C++/C 语言 LabVIEW 开发环境具有一系列优点, 从其流程图式的编程 不需预先编译就存在的语法检查 调试过程使用的数据探针, 到其丰富的函数功能 数值分析 信号处理和设备驱动等功能, 都令人称道 关于 LabView/CVI 的驱动程序接口的详细说明请参考其演示源程序 第二节 设备对象管理函数原型说明 创建设备对象函数函数原型 : HANDLE CreateDevice(int DeviceLgcID = 0) Declare Function CreateDevice Lib "USB2812" (Optional ByVal DeviceLgcID As Long = 0) As Long Function CreateDevice(DeviceLgcID:Integer = 0):Integer; StdCall; External 'USB2812' Name 'CreateDevice'; LabView: CreateDevice DeviceID Return Device Object 功能 : 该函数负责创建设备对象, 并返回其设备对象句柄 参数 : DeviceLgcID 设备逻辑 ID( Identifier ) 标识号 当向同一个 Windows 系统中加入若干相同类型的 USB 设备时, 系统将以该设备的 基本名称 与 DeviceLgcID 标识值为名称后缀的标识符来确认和管理该设备 比如若用户往 Windows 系统中加入第一个 USB2812 AD 模板时, 系统则以 USB2812 作为基本名称, 再以 DeviceLgcID 6

7 北京阿尔泰科技发展有限公司的初值组合成该设备的标识符 USB 来确认和管理这第一个设备, 若用户接着再添加第二个 USB2812 AD 模板时, 则系统将以 USB 来确认和管理第二个设备, 若再添加, 则以此类推 所以当用户要创建设备句柄管理和操作第一个 USB 设备时,DeviceLgcID 应置 0, 第二应置 1, 也以此类推 默认值为 0 返回值 : 如果执行成功, 则返回设备对象句柄 ; 如果没有成功, 则返回错误码 INVALID_HANDLE_VALUE 由于此函数已带容错处理, 即若出错, 它会自动弹出一个对话框告诉您出错的原因 您只需要对此函数的返回值作一个条件处理即可, 别的任何事情您都不必做 相关函数 :ReleaseDevice 创建设备对象函数 ( 扩展函数 ) 函数原型 : HANDLE CreateDeviceEx(int D Declare Function evicephysid = 0) CreateDeviceEx Lib "USB2812" (ByVal DevicePhysID As Long = 0) As Long Function CreateDeviceEx(DevicePhysID:Integer = 0):Integer; LabView: 请参考相关演示程序 StdCall; External 'USB2812' Name 'CreateDeviceEx'; 功能 : 该函数负责创建设备对象, 并返回其设备对象句柄 设备对象句柄是访问某一台设备的唯一依据 不同 DevicePhysID 创建的设备对象句柄用于访问不同的设备 只有成功创建 DevicePhysID 指定设备的句柄后, 设备对用户来讲才是可用的 因为每一个访问设备的驱动函数接口都需要 hdevice 这个设备句柄参数 参数 : DevicePhysID 设备物理 ID( Identifier ) 标识号 如果您使用单个 USB2812 设备, 该参数等于 0 即可, 且下 面的内容您不必阅读 但如果您需要多卡工作时, 此参数便大有用武之地, 请阅读下以内容 假如您所选用的产品只有 32 个 AD 通道, 而您需要 128 路信号, 那么您就需要同时使用四块卡来实现此功能 具体办法是您需要将 128 路信号依次分配到四个卡上, 如下表 : 卡号信号通道物理 ID 号逻辑 ID 号第一块 1 ~32 0 若第二个加载此卡, 则为 1, 否则为其他号第二块 33~64 1 若最先加载此卡, 则为 0, 否则为其他号第三块 65~96 2 若第四个加载此卡, 则为 3, 否则为其他号第四块 97~128 3 若第三个加载此卡, 则为 2, 否则为其他号从上表可知, 如果使用您物理 ID 号, 那么不管怎么安装您的硬件设备, 其卡的物理编址不会发生任何变化, 在软件上您用相应的物理 ID 号创建的设备对象所访问设备在物理顺序上不会发生变化, 它始终对应于您的事先分配的信号通道 而使用逻辑 ID 号则不然, 同样的逻辑 ID 值可能在不同的拔插顺序下会指向不同的物理设备而使软件的通道序列与硬件上无法一一对应 为了更好的保证物理通道序列与软件通道序列的对应关系, 请务必保证板上的物理 ID 设置不重号 否则,CreateDevice () 只能创建重号中逻辑号最小的一个设备的对象, 且具体创建的是哪一个设备也只能由用户根据采样信号特征等大概地确定 需要注意的是, 物理 ID 号的设置有限的 如果实际设备数量超过这个有限值, 那么超过的部分的物理 ID 号均设置为最大物理 ID 号, 在创建设备对象时自动按逻辑 ID 处理 比如该产品的物理 ID 最多只能管理 16 个设备 (ID 值为 0~15), 如果您要使用 18 个设备, 那么为第 个设备创建设备对象时, 其 DevicePhysID 应分别等于 返回值 : 如果执行成功, 则返回设备对象句柄 ; 如果没有成功, 则返回错误码 INVALID_HANDLE_VALUE 由于此函数已带容错处理, 即若出错, 它会自动弹出一个对话框告诉您出错的原因 您只需要对此函数的返回值作一个条件处理即可, 别的任何事情您都不必做 相关函数 :ReleaseDevice 7

8 USB2811 WIN2000/XP 驱动程序使用说明书版本 : Visual C++ & C++Builder 程序举例 : HANDLE hdevice; // 定义设备对象句柄 hdevice=createdevice(0); // 创建设备对象, 并取得设备对象句柄 if(hdevice==invalide_handle_ VALU E) // 判断设备对象句柄是否有效 { return; // 退出该函数 } : Visual Basic 程序举例 : Dim hdevice As Long ' 定义设备对象句柄 hdevice = CreateDevice(0) ' 创建设备对象, 并取得设备对象句柄, 管理第一个 USB 设备 If hdevice = INVALID_HANDLE_VALUE Then ' 判断设备对象句柄是否有效 Else Exi t Sub ' 退出该过程 End If : 取得在系统中的设备总台数函数原型 : Visual C++ & C++Builder: int GetDeviceCount (HANDLE hdevice) Declare Function GetDeviceCount Lib "USB2812" (ByVal hdevice As Long ) As Integer Function GetDeviceCount (hdevice : Integer): Integer; StdCall; External 'USB2812' Name ' GetDeviceCount '; LabView: 请参考相关演示程序 功能 : 取得在系统中物理设备的总台数 参数 :hdevice 设备对象句柄, 它应由 Crea tedevice创建 返回值 : 若成功, 则返回实际设备台数, 否则返回 0, 用户可以用 GetLastError 捕获错误码 相关函数 :CreateDevice ReleaseDevice 取得当前设备对象句柄指向的设备所在的设备 ID 函数原型 : Visual C++ & C++Builder: BOOL GetDeviceCurrentID (HANDLE hdevice, PLONG DevicePhysID, PLONG DeviceLgcID) Declare Function GetDeviceCurrentID Lib "USB2812" (ByVal hdevice As Long, _ ByRef DevicePhysID As Long, _ ByRef DeviceLgcID As Long ) As Boolean Function GetDeviceCurrentID (hdevice : Integer; DevicePhysID : PArrayLong; DeviceLgcID : PArrayLong;): Boolean; StdCall; External 'USB2812' Name ' GetDeviceCurrentID '; 8

9 北京阿尔泰科技发展有限公司 LabView: 请参考相关演示程序 功能 : 取得指定设备对象所代表的设备在设备链中的物理设备 ID 号和逻辑 ID 号 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 创建 DevicePhysI D 指针参数, 取得指定设备的物理 ID 该号可以由用户设置板上 JP1 跳线器获得 当多卡工 作时, 该物理 ID 号能让用户准确的辩别每一个卡所处的编址 该编址除了用户能手动改变以外, 不会随着系 统加载卸载设备的顺序或者是用户插拔设备的顺序而改变其相应的物理编址, 它只会改变其逻辑编址, 即 DeviceLgcID 的值 比如您使用某一产品, 该产品只有 32 个 AD 通道, 而您需要 128 个通道采样, 那么您就需 要四块卡来实现此功能 在实际采样中, 您需要对将 128 路信号依次分配到四个卡上, 如下表 : 卡号 信号通道 物理 ID 号 逻辑 ID 号 第一块 1 ~32 0 若第二个加载此卡, 则为 1, 否则为其他号 第二块 33~64 1 若最先加载此卡, 则为 0, 否则为其他号 第三块 65~96 2 若第四个加载此卡, 则为 3, 否则为其他号 第四块 97~128 3 若第三个加载此卡, 则为 2, 否则为其他号 从上表可知, 如果使用您物理 ID 号, 那么不管怎么安装您的硬件设备, 那么其卡的物理编址不会发生任 何变化, 在软件上您用相应的物理 ID 号创建的设备对象所访问设备在物理上不会发生变化, 它始终对应于您 的事先分配的信号通道 而使用逻辑 ID 号则不然, 同样的逻辑 ID 值可能在不同的拔插顺序下会指向不同的物 理设备而使软件的通道序列与硬件上无法一一对应 返回值 : 若成功, 则返回由 hdevice 参数代表的设备在设备链中的设备 ID, 否则返回 -1, 用户可以用 GetLastError 捕获错误码 注意其返回的 ID 是一定与在 CreateDevice 函数中指定的 DeviceLgcID 参数值相等 相关函数 :CreateDevice ReleaseDevice 用对话框控件列表计算机系统中所有 USB2812 设备各种配置信息函数原型 : Visual C++ & C++Builder: BOOL ListDeviceDlg (void) Declare Function ListDeviceDlg Lib "USB2812" ( )As Boolean Function ListDeviceDlg ( ): Boolean; StdCall; External 'USB2812' Name ' ListDeviceDlg '; 请参考相关演示程序 功能 : 列表系统中 USB2812 的硬件配置信息 参数 : 无 返回值 : 若成功, 则弹出对话框控件列表所有 USB2812 设备的配置情况 相关函数 :CreateDevice ReleaseDevice 复位整个 USB 设备函数原型 : Visual C++ & C++Builder: BOOL ResetDevice (HANDLE hdevice) 9

10 USB2811 WIN2000/XP 驱动程序使用说明书版本 : Declare Function ResetDevice Lib "USB2812" (ByVal hdevice As Long ) As Boolean Function ResetDevice (hdevice : Integer):Boolean; StdCall; External 'USB2812' Name 'ResetDevice'; LabView: 请参考相关演示程序 功能 : 复位整个 USB 设备, 相当于它与 PC 机端重新建立 其效果与重新插上 USB 设备等同 一般在出错情况下, 想软复位来建决重连接问题, 就可以调用该函数解决此问题 参数 :hdevice 设备对象句柄, 它应由 CreateDevice 创建 由它指向要复位的设备 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 :CreateDevice ReleaseDevice 释放设备对象所占的系统资源及设备对象函数原型 : Visual C++ & C++Builder: BOOL ReleaseDevice(HANDLE hdevice) Declare Function ReleaseDevice Lib "USB2812" (ByVal hdevice As Long ) As Boolean Function ReleaseDevice(hDevice : Integer):Boolean; StdCall; External 'USB2812' Name 'ReleaseDevice'; LabView: ReleaseDevice hdevice Return Boolean Value 功能 : 释放设备对象所占用的系统资源及设备对象自身 参数 :hdevice 设备对象句柄, 它应由 CreateDevice 创建 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 :CreateDevice 应注意的是,CreateDevice 必须和 ReleaseDevice 函数一一对应, 即当您执行了一次 CreateDevice, 再一次执行这些函数前, 必须执行一次 ReleaseDevice 函数, 以释放由 CreateDevice 占用的系统软硬件资源, 如系统内存等 只有这样, 当您再次调用 CreateDevice 函数时, 那些软硬件资源才可被再次使用 第三节 AD 采样操作函数原型说明 初始化设备对象函数原型 : Visual C++ & C++Builder: BOOL InitDeviceAD( HANDLE hdevice, PUSB2812_PARA_AD padpara ) Declare Function InitDeviceAD Lib "USB2812" (ByVal hdevice As Long, _ ByRef padpara As USB2812_PARA _AD) As Boolean Function InitDeviceAD( hdevice : Integer; padpara:pusb2812_para_ad):boolean; StdCall; External 'USB2812' Name 'InitDeviceAD'; LabView: 10

11 北京阿尔泰科技发展有限公司 InitDeviceAD hdevice padpara Return Boolean Value 功能 : 它负责初始化设备对象中的 AD 部件, 为设备操作就绪有关工作, 如预置 AD 采集通道, 采样频率等, 然后启动 AD 设备开始 AD 采集, 随后, 用户便可以连续调用 ReadDeviceAD 读取 USB 设备上的 AD 数据以实现连续采集 参数 : hdevice 设备对象句柄, 它应由 USB 设备的 CreateDevice 创建 padpar a 设备对象参数结构, 它决定了设备对象的各种状态及工作方式, 如 AD 采样通道 采样频率等 请参考 AD 硬件参数介绍 返回值 : 如果初始化设备对象成功, 则返回 TRUE, 且 AD 便被启动 否则返回 FALSE, 用户可用 GetLastError 捕获当前错误码, 并加以分析 相关函数 : CreateDevice ReadDeviceAD ReleaseDevice 注意 : 该函数将试图占用系统的某些资源, 如系统内存区 DMA资源等 所以当用户在反复进行数据采集之前, 只须执行一次该函数即可, 否则某些资源将会发生使用上的冲突, 便会失败 除非用户执行了 ReleaseDeviceAD 函数后, 再重新开始设备对象操作时, 可以再执行该函数 所以该函数切忌不要单独放在循环语句中反复执行, 除非和 ReleaseDeviceAD 配对 批量读取 USB 设备上的 AD 数据函数原型 : Visual C++ & C++Builder: BOOL ReadDeviceAD (HANDLE hdevice, USHORT ADBuffer[], LONG nreadsizewords, PLONG nretsizewords = NULL) Declare Function ReadDeviceAD Lib "USB2812" (ByVal hdevice As Long, _ ByRef ADBuffer As Integer, _ ByVal nreadsizewords As Long, _ Optional ByRef nretsizewords As Long = 0) As Boolean Function ReadDeviceAD( hdevice : Integer; ADBuffer : SmallInt; nreadsizebytes:longword; nretsizewords : Pointer = 0) : Boolean; StdCall; External 'USB2812' Name 'ReadDeviceAD'; LabView: ReadDeviceAD hdevice Input padbuffer nreadsizewords Return Boolean Value Output padbuffer 功能 : 读取 USB 设备 AD 部件上的批量数据 它不负责初始化 AD 部件, 待读完整过指定长度的数据才返 回 它必须在 InitDeviceAD 之后,ReleaseDeviceAD 之前调用 参数 : 11

12 USB2811 WIN2000/XP 驱动程序使用说明书版本 : hdevice 设备对象句柄, 它应由 CreateDevice 创建 ADBuffe r 用户数据缓冲区地址 接受的是从设备上采集的 LSB 原码数据, 关于如何将 LSB 原码数据转换成电压值, 请参考 数据格式转换与排列规则 章节 nreadsizewords 读取数据的长度 ( 以字为单位 ), 为了提高读取速率, 根据特定要求, 其长度必须指定为 256 字的整数倍长, 如 等字长, 同时, 数据长度也要为采样通道数的整数倍, 以便于通道数据对齐处理, 所以 nreadsizewords 为 (256*(LastChannel FirstChannel + 1)) 的整数倍 否则,USB 设备对象将失败该读操作 nretsizewords 在当前操作中该函数实际读取的点数 只有当函数成功返回时该参数值才有意义, 而当函数返回失败时, 则该参数的值与调用此函数前的值相等, 不会因为函数被调用而改变, 因此最好在读取 AD 数据前, 将此参数值赋初值 0 需要注意的是在函数成功返回后, 若此参数值等于 0, 则需要重新调用此函数读取 AD 数据, 直到此参数的值不等于 0 为止 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateDevice InitDeviceAD ReleaseDevice 释放设备对象中的 AD 部件函数原型 : Visual C++ & C++Builder: BOOL ReleaseDeviceAD(HANDLE hdevice) Declare Function ReleaseDeviceAD Lib "USB2812" (ByVal hdevice As Long ) As Boolean Function ReleaseDeviceAD(hDevice : Integer):Boolean; StdCall; External 'USB2812' Name 'ReleaseDeviceAD'; LabView: ReleaseDeviceAD hdevice Return Boolean Value 功能 : 释放设备对象中的 AD 部件所占用的系统资源 参数 :hdevice 设备对象句柄, 它应由 CreateDevice 创建 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 :CreateDevice InitDeviceAD ReleaseDevice 应注意的是,InitDeviceAD 必须和 ReleaseDeviceAD 函数一一对应, 即当您执行了一次 InitDeviceAD, 再一 次执行这些函数前, 必须执行一次 ReleaseDeviceAD 函数, 以释放由 InitDeviceAD 占用的系统软硬件资源, 如系 统内存等 只有这样, 当您再次调用 InitDeviceAD 函数时, 那些软硬件资源才可被再次使用 这个对应关系对 于非连续采样的场合特别适用 比如用户先采集一定长度的数据后, 然后对根据这些数据或其他条件, 需要改变采样通道或采样频率等配置时, 则可以先用 ReleaseDeviceAD 释放先已由 InitDeviceAD 占用的资源, 然后再用 InitDeviceAD 重新分配资源和初始化设备状态, 即可实现所提到的功能 以上函数调用一般顺序 1 CreateDevice 2 InitDeviceAD 3 ReadDeviceAD 4 ReleaseDeviceAD 5 ReleaseDevice 用户可以反复执行第 3 步, 以实现高速连续不间断数据采集 如果在采集过程中要改变设备状态信息, 如采样通道等, 则执行到第 4 步后再回到第 2 步用新的状态信息重新初始设备 12

13 北京阿尔泰科技发展有限公司注意在第 3 步中, 若其 ReadDeviceAD 函数成功返回, 且 nretsizewords 参数值等于 0, 则需要重新执行第 3 步, 直到不等于 0 为止 第四节 AD 硬件参数系统保存与读取函数原型说明 从 Windows 系统中读入硬件参数函数函数原型 : Visual C++ & C++Builder: BOOL LoadParaAD(HANDLE hdevice, PUSB2812_PARA_AD padpara) Declare Function LoadParaAD Lib "USB2812" (ByVal hdevice As Long, _ ByRef padpara As USB2812_PARA_AD) As Boolean Function LoadParaAD(hDevice : Integer; padpara:pusb2812_para_ad):boolean; StdCall; External 'USB2812' Name 'LoadParaAD'; LabView: LoadParaAD hdevice Return Boolean Value Input padpara Output padpara 功能 : 负责从 Windows 系统中读取设备硬件参数 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 创建 padpara 属于 PUSB2812_PARA 的结构指针型, 它负责返回 USB 硬件参数值, 关于结构指针类型 PUSB2812_PARA 请参考相应 USB2812.h 或该结构的帮助文档的有关说明 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice SaveParaAD ReleaseDevice Visual C++ & C++Builder 举例 : : USB2812_PARA_AD ADPara; HANDLE hdevice; HDevice = CreateDevice(0) ; // 管理秕一个 USB 设备 if(!loadparaad(hdevice, &ADPara)) { AfxMessageBox( 读入硬件参数失败, 请确认您的驱动程序是否正确安装 ); Return; // 若错误, 则退出该过程 } : Visual Basic 举例 : : Dim ADPara As USB2812_PARA_AD Dim hdevice As Long : hdevice = CreateDevice(0) 管理第一个 USB 设备 If Not LoadParaAD(hDevice, ADPara) Then MsgBox 读入硬件参数失败, 请确认您的驱动程序是否正确安装 Exit Sub ' 若错误, 则退出该过程 End If : 往 Windows 系统写入设备硬件参数函数函数原型 : Viusal C++ & C++Builder: BOOL SaveParaAD(HANDLE hdevice, PUSB2812_PARA_AD padpara) 13

14 USB2811 WIN2000/XP 驱动程序使用说明书版本 : Declare Function SaveParaAD Lib "USB2812" (ByVal hdevice As Long, _ ByRef padpara As USB2812_PARA_AD) As Boolean Function SaveParaAD (hdevice : Integer; padpara:pusb2812_para_ad):boolean; StdCall; External 'USB2812' Name 'SaveParaAD'; LabView: SaveParaAD hdevice padpara Return Boolean Value 功能 : 负责把用户设置的硬件参数保存在 Windows 系统中, 以供下次使用 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 创建 padpara AD 设备硬件参数, 请参考 硬件参数结构 章节 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice LoadParaAD ReleaseDevice AD 采样参数复位至出厂默认值函数函数原型 : Viusal C++ & C++ Builder: BOOL ResetParaAD (HANDLE hdevice, PUSB2812_PARA_AD padpara) Declare Function ResetParaAD Lib "USB2812" (ByVal hdevice As Long, _ ByRef padpara As USB2812_PARA_AD) As Boolean Function ResetParaAD ( hdevice : Integer; padpara : PUSB2812_PARA_AD) : Boolean; StdCall; External 'USB2812' Name ' ResetParaAD '; 请参考相关演示程序 功能 : 将系统中原来的 AD 参数值复位至出厂时的默认值 以防用户不小心将各参数设置错误造成一时无法确定错误原因的后果 参数 : hdevice设备对象句柄, 它应由 CreateDevice或 CreateDeviceEx 创建 padpara 设备硬件参数, 它负责在参数被复位后返回其复位后的值 关于 USB2812_PARA_AD 的详细介绍请参考 USB2812.h 或 USB2812.Bas 或 USB2812.Pas 函数原型定义文件, 也可参考本文 硬件参数结构 关于该结构的有关说明 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice LoadParaAD SaveParaAD ResetParaAD ReleaseDevice 注意 : 在您编写工程应用软件时, 若要更方便的保存和读取您特有的软件参数, 请不防使用我们为您提供 14

15 北京阿尔泰科技发展有限公司 的辅助函数 :SaveParaInt LoadParaInt SaveParaString LoadParaString, 详细说明请参考共用函数介绍章节 中的 其他函数原型说明 第五节 DA 模拟量输出操作函数原型说明 输出模拟信号到指定通道函数原型 : Visual C++ & C++Builder: BOOL WriteDeviceDA ( HANDLE hdevice, SHORT ndadata, int ndachannel) Declare Function WriteDeviceDA Lib "USB2812" (ByVal hdevice As Long, _ ByVal ndadata As Integer,_ ByVal ndachannel As Integer) As Boolean Function WriteDeviceDA ( hdevice : Integer; ndadata : SmallInt; ndachannel : Integer) : Boolean; StdCall; External 'USB2812' Name ' WriteDeviceDA '; 请参考相关演示程序 功能 : 输出 DA 原始数据到 CN1 上的 VOUT0 上 参数 : hdevice设备对象句柄, 它应由 CreateDevice或 CreateDeviceEx 创建 ndadata 指输出的 DA 原始码数据, 它的取值范围为 [0, 65535], 它与实际输出模拟量值的对应关系请参考 DA 电压值转换成 LSB 原码数据的换算方法 章节 ndachannel 需要指定的模拟量通道号, 其取值范围为 [0, 7] 返回值 : 若成功, 返回 TRUE, 输出 DA 原始数据到 CN1 上的 VOUT0 上 ; 否则返回 FALSE, 您可以调用 GetLastErrorEx 函数取得错误或错误字符信息 相关函数 : CreateDevice ReleaseDevice 以上函数调用一般顺序 1 CreateDevice 2 WriteDeviceDA 3 ReleaseDevice 用户可以反复执行第 2 步, 以进行模拟量输出不断变化 ( 可以和 AD 采样同时进行, 互不影响 ) 第六节 CNT 计数与定时器操作函数原型说明 设置计数器的初值函数原型 : Visual C++ & C++Builder: BOOL SetDeviceCNT(HANDLE hdevice, ULONG ContrlMode, ULONG CNTVal, ULONG ulchannel) 15

16 USB2811 WIN2000/XP 驱动程序使用说明书版本 : Declare Function SetDeviceCNT Lib "USB2812" (ByVal hdevice As Long, _ ByVal ContrlMode As Long, _ ByVal CNTVal As Long, _ ByVal ulchannel As Long) As Boolean Function SetDeviceCNT (hdevice : Integer; ContrlMode : LongWord; CNTVal : LongWord; ulchannel : LongWord) : Boolean; StdCall; External 'USB2812' Name ' SetDeviceCNT '; 请参考相关演示程序 功能 : 设置计数器的初值 参数 : hdevice设备对象句柄, 它应由 CreateDevice创建 ContrlMode 方式控制字 其选项值如下表 : 常量名常量值功能定义 USB2812_GATEMODE_POSITIVE_0 0x0000 计数结束产生中断 USB2812_GATEMODE_RISING_1 0x0001 可编程单拍脉冲 USB2812_GATEMODE_POSITIVE_2 0x0002 频率发生器 USB2812_GATEMODE_POSITIVE_3 0x0003 方波发生器 USB2812_GATEMODE_POSITIVE_4 0x0004 软件触发选通 USB2812_GATEMODE_RISING_5 0x0005 硬件触发选通 CNTVal 计数初值 ulchannel 计数器通道选择, 取值为 [0,2] 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice GetDeviceCNT ReleaseDevice 取得各路计数器的当前计数值函数原型 : Visual C++ & C++Builder: BOOL GetDeviceCNT (HANDLE hdevice, PULONG pcntval, ULONG ulchannel) Declare Function GetDeviceCNT Lib "USB2812" (ByVal hdevice As Long, _ ByRef pcntval As Integer, _ ByVal ulchannel As Long) As Boolean Function GetDeviceCNT ( hdevice : Integer; pcntval: Pointer; pcontrolmode: Pointer; ulchannel: LongWord) : Boolean; 16

17 北京阿尔泰科技发展有限公司 StdCall; External 'USB2812' Name ' GetDeviceCNT '; 请参考相关演示程序 功能 : 取得各路计数器的当前计数值 参数 : hdevice设备对象句柄, 它应由 CreateDevice创建 pcntval 取得计数初值 ulchannel 计数器通道选择, 取值为 [0,2] 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice SetDeviceCNT ReleaseDevice 第七节 DIO 数字开关量输入输出简易操作函数原型说明 十六路开关量输入函数原型 : Visual C++ & C++Builder: BOOL GetDeviceDI (HANDLE hdevice, BYTE bdists[16]) Declare Function GetDeviceDI Lib "USB2812" (ByVal hdevice As Long, _ ByVal bdists(0 to 15 ) As Long) As Boolean Function GetDeviceDI ( hdevice : Integer; bdists:pointer):boolean; StdCall; External 'USB2812' Name ' GetDeviceDI '; LabView: GetDeviceDI hdevice Return Boolean Value pdipara Output pdipara 功能 : 负责将 USB 设备上的输入开关量状态读入内存 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 决定 bdists 十六路开关量输入状态的参数结构, 共有 16 个成员变量, 分别对应于 DI0-DI15 路开关量输入状态 位 如果 bdists[0] 为 1 则使 0 通道处于开状态, 若为 0 则 0 通道为关状态 其他同理 具体定义请参考 DI 数字开关量输入参数介绍 章节 返回值 : 若成功, 返回 TRUE, 其 bdists[x] 中的值有效 ; 否则返回 FALSE, 其 bdists[x] 中的值无效 相关函数 : CreateDevice SetDeviceDO ReleaseDevice 十六路开关量输出函数原型 : Visual C++ & C++Builder: BOOL SetDeviceDO (HANDLE hdevice, BYTE bdosts[16]) Declare Function SetDeviceDO Lib "USB2812" ( ByVal hdevice As Long, _ ByVal bdosts(0 to 15 )As Long) As Boolean Function SetDeviceDO (hdevice : Integer; bdosts:pointer):boolean; 17

18 USB2811 WIN2000/XP 驱动程序使用说明书版本 : LabView: hdevice Input pdopara StdCall; External 'USB2812' Name ' SetDeviceDO '; SetDeviceDO Return Boolean Value 功能 : 负责将 USB 设备上的输出开关量置成相应的状态 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 决定 bdosts 十六路开关量输出状态的参数结构, 共有 16 个成员变量, 分别对应于 DO0-DO15 路开关量输出状态位 比如置 bdosts[0] 为 1 则使 0 通道处于 开 状态, 若为 0 则置 0 通道为 关 状态 其他同理 请注意, 在实际执行这个函数之前, 必须对这个参数结构的 DO0 至 DO15 共 16 个成员变量赋初值, 其值必须为 1 或 0 具体定义请参考 DO 数字开关量输出参数介绍 返回值 : 若成功, 返回 TRUE, 否则返回 FALSE 相关函数 : CreateDevice GetDeviceDI ReleaseDevice 以上函数调用一般顺序 1 CreateDevice 2 SetDeviceDO ( 或 GetDeviceDI, 当然这两个函数也可同时进行 ) 3 ReleaseDevice 用户可以反复执行第 2 步, 以进行数字 I/O 的输入输出 ( 数字 I/O 的输入输出及 AD 采样可以同时进行, 互不影响 ) 第四章硬件参数结构 AD 硬件参数介绍 (USB2812_PARA_AD) Visual C++ & C++Builder: typedef struct _USB2812_PARA_AD // 板卡各参数值 { LONG CheckStsMode; // FIFO 采样标志 LONG ADMode; // AD 模式选择 ( 连续采集 / 分组采集 ) LONG FirstChannel; // 首通道, 取值范围为 [0, 31] LONG LastChannel; // 末通道, 取值范围为 [0, 31] LONG Frequency; // 采集频率, 单位为 Hz, 取值范围为 [31, ] LONG InputRange; // 模拟量输入量程范围 LONG GroupInterval; // 分组采样时的组间间隔 ( 单位 : 微秒 ) LONG LoopsOfGroup; // 组循环次数 LONG Gains; // 增益控制字 LONG TriggerMode; // 触发模式选择 ( 软件触发 后触发 ) LONG TriggerType; // 触发类型选择 ( 边沿触发 / 脉冲触发 ) LONG TriggerDir; // 触发方向选择 ( 正向 / 负向触发 ) LONG TrigLevelVolt; // 触发电平 (-10000mV mV) LONG TrigWindow; // 触发灵敏度 (1-255), 单位 :0.5 微秒 LONG GroundingMode; // 接地方式 ( 单端或双端选择 ) 18

19 北京阿尔泰科技发展有限公司 } USB2812_PARA_AD, *PUSB2812_PARA_AD; Private Type USB2812_PARA_AD CheckStsMode As Long End Type ADMode As Long ' FIFO 采样标志 ' AD 模式选择 ( 连续采集 / 分组采集 ) FirstChannel As Long ' 首通道, 取值范围为 [0, 31] LastChannel As Long ' 末通道, 取值范围为 [0, 31] Frequency As Long InputRange As Long GroupInterval As Long LoopsOfGroup As Long Gains As Long TriggerMode As Long ' AD 采样频率, 单位 Hz, 取值范围为 [31, ] ' 模拟量输入量程范围 ' 分组间隔, 单位微秒 ' 组循环次数 ' 增益控制字 ' 触发模式选择 ( 软件触发 后触发 ) TriggerType As Long ' 触发类型选择 ( 边沿 / 电平触发类型 ) TriggerDir As Long ' 触发方向选择 ( 正向 / 负向触发方向 ) TrigLevelVolt As Long TrigWindow As Long ' 触发电平 (-10000mV mV) ' 触发灵敏度 (1-255), 单位 :0.5 微秒 GroundingMode As Long ' 接地方式 ( 单端或双端选择 ) Type // 定义结构体数据类型 PUSB2812_PARA_AD = ^USB2812_PARA_AD; // 指针类型结构 USB2812_PARA_AD = record // 标记为记录型 CheckStsMode : LongInt; // FIFO 采样标志 ADMode : LongInt; // AD 模式选择 ( 连续采集 / 分组采集 ) FirstChannel : LongInt; // 首通道, 取值范围为 [0, 31] LastChannel : LongInt; // 末通道, 取值范围为 [0, 31] Frequency : LongInt; // 采集频率, 单位为 Hz, 取值范围为 [31, ] InputRange : LongInt; // 模拟量输入量程范围 GroupInterval : LongInt; // 分组采样时的组间间隔 ( 单位 : 微秒 ) LoopsOfGroup : LongInt; // 组循环次数 Gains : LongInt; // 增益控制字 TriggerMode : LongInt; // 触发模式选择 ( 软件触发 后触发 ) TriggerType : LongInt; // 触发类型选择 ( 边沿触发 / 脉冲触发 ) TriggerDir : LongInt; // 触发方向选择 ( 正向 / 负向触发 ) TrigLevelVolt : LongInt; // 触发电平 (-10000mV mV) TrigWindow : LongInt; // 触发灵敏度 (1-255), 单位 :0.5 微秒 GroundingMode : LongInt; // 接地方式 ( 单端或双端选择 ) End; LabView: 首先请您关注一下这个结构与前面 ISA 总线部分中的硬件参数结构 PARA 比较, 该结构实在太简短了 其原因就是在于 USB 设备是系统全自动管理的设备, 什么端口地址, 中断号,DMA 等将与 USB 设备的用户永远告别, 一句话 USB 设备简单得就象使用电源插头一样 19

20 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 硬件参数说明 : 此结构主要用于设定设备硬件参数值, 用这个参数结构对设备进行硬件配置完全由 InitDeviceAD 函数完成 CheckStsMode 查询 FIFO 状态的模式, 它用于同步 AD 的采样时序 由于有不同的采样频率, 因此写入 FIFO 数据的速度也不一样, 所以需要依据 FIFO 的半满或者是非空标志同步对 FIFO 数据的读取 如果选择半 满查询模式, 则在启动 AD 采样后不能马上读取 FIFO 中的数据, 而是要等到 FIFO 的半满状态建立时才能读取 数据, 此种模式用于大批量高速采样情况下 ( 实时性要求不大 ) 如果选择非空查询模式, 则在启动 AD 采样后, 只要 FIFO 中不为空, 那怕只有一个数据时也能读取, 此种模式用于较低速, 但快速取得小批量数据的情况下 ( 实 时性要求较高 ) 常量名常量值功能定义 USB2812_CHKSTSMODE_HALF 0x0000 查询 FIFO 半满标志 ( 建议高频率采集时使用 ) USB2812_CHKSTSMODE_NPT 0x0001 查询 FIFO 非空标志 ( 建议高实时采集时使用 ) ADMode AD 采样模式 它的取值如下表 : 常量名常量值功能定义 USB2812_ADMODE_SEQUENCE 0x0000 连续采集模式 USB2812_ADMODE_GROUP 0x0001 分组采集模式连续采集方式的情况是 : 在由 Fr equency指定的采样频率下所采集的全部数据在时间轴上是等简隔的, 比如将 Frequency 指定为 100KHz, 即每隔 10 微秒采样一个点, 总是这样重复下去 而分组采集方式的情况是 : 所有采集的数据点在时间轴上被划分成若干个等长的组, 而组内通常有大于 2 个点的数据, 组内各点频率由 Frequency 决定, 组间间隔由 GroupInterval 决定 比如用户要求在对 0-15 通道共 16 个通道用 100KHz 频率每采集一个轮回后, 要求间隔 1 毫秒后, 再对这 16 个通道采集下一个轮回, 那么分组采集便是最佳方式, 它可以将组间延时误差控制在 0.5 微秒以下 关于分组与连续采集更详细的说明请参考硬件说明书 如下图 : t nt mt nt mt nt 其中 :t 为所需触发 A/D 转换的周期 Cycle, 它由 Frequency 参数的倒数决定 Cycle = 1 / Frequency n 为每组的通道数 ChannelCount 决定, 即 ChannelCount = LastChannel-FirstChannel+1 nt 为每组操作所需时间即 Cycle * ChannelCount * LoopsofGroup ( 此处假定 LoopsofGroup=1) mt 为每组操作之间所间隔的时间, 它由 GroupInterval 参数决定, 单位为 1uS FirstChannel 首通道值, 取值范围应根据设备的总通道数设定, 本设备的 AD 采样首通道取值范围为 0~31, 要求首通道等于或小于末通道 LastChannel 末通道值, 取值范围应根据设备的总通道数设定, 本设备的 AD 采样首通道取值范围为 0~31, 要求末通道大于或等于首通道 注 : 当首通道和末通道相等时, 即为单通道采集 Frequency AD 采样频率, 本设备的频率取值范围为 [31Hz, 250kHz] 注意: 在内时钟 ( 即 ClockSource = USB2812_CLOCKSRC_IN) 方式下 : 若连续采集 ( 即 ADMode = USB2812_ADMODE_SEQUENCE) 时, 此参数控制各处通道间的采样频率 若分组采集 ( 即 ADMode= USB2812_ADMODE_GROUP) 时, 则此参数控制各组组内的采样频率, 而组间时间则由 GroupInterval 决定 在外时钟 ( 即 ClockSource = USB2812_CLOCKSRC_OUT) 方式下 : 若连续采集 ( 即 ADMode = USB2812_ADMODE_SEQUENCE) 时, 此参数自动失效, 因为外时钟的频率代替了此参数设定的频率 若为分组采集 ( 即 ADMode= USB2812_ADMODE_GROUP) 时, 则该参数控制各组组内的采样频率, 而外时钟则是每组的触发频率 此时,GroupInterval 参数无效 InputRange 模拟量输入量程范围 20

21 北京阿尔泰科技发展有限公司常量名 常量值 功能定义 USB2812_INPUT_N10000_P10000mV 0x00 ±10000mV USB2812_INPUT_N5000_P5000mV 0x01 ±5000mV USB2812_INPUT_N2500_P2500mV 0x02 ±2500mV USB2812_INPUT_0_P10000mV 0x03 0~10000mV GroupInterval 分组间隔, 指定两组间的时间间隔, 单位微秒, 取值范围为 [1, 32767] LoopsOfGroup 组循环次数 ( 在分组采集时有效 ), 即指每一组采集从首通道依次采集到末通道后再回到首通 道的次数 比如 =1 则表示从首通道采集到末通道后则自动进入分组间隔准备采集下一组 若 =2, 则表示从首 通道采集到末通道后再回到首通道采集到末通道一遍后进入组间间隔, 依此类推 Gains 程控增益放大倍数, 被采样的外界信号经通道开关选通后进入一个程控增益放大器如 AD8251 芯片, 它可以将原始模拟信号放大指定倍数后再进入 AD 转换器被转换 常量名常量值功能定义 USB2812_GAINS_1MULT 0x00 1 倍增益 ( 使用 AD8251 放大器 ) USB2812_GAINS_2MULT 0x01 2 倍增益 ( 使用 AD8251 放大器 ) USB2812_GAINS_4MULT 0x02 4 倍增益 ( 使用 AD8251 放大器 ) USB2812_GAINS_8MULT 0x03 8 倍增益 ( 使用 AD8251 放大器 ) TriggerMode AD 触发模式, 若等于常量 USB2812_TRIGMODE_SOFT 则为内部软件触发, 若等于常量 USB2812_TRIGMODE_POST 则为外部硬件后触发 两种方式的主要区别是 : 外触发是当设备被 InitDeviceAD 函 数初始化就绪后, 并没有立即启动 AD 采集, 仅当外接管脚 ATR 上有一个符合要求的信号时,AD 转换器便被启 动, 且按用户预先设定的采样频率由板上的硬件定时器时定触发 AD 等间隔转换每一个 AD 数据, 其触发条件由 触发类型和触发方向及触发电平决定 常量名 常量值 功能定义 USB2812_TRIGMODE_SOFT 0x0000 软件内触发方式 USB2812_TRIGMODE_POST 0x0001 硬件后触发方式 TriggerType AD 外触发方式使用信号方向 它的其选项值如下表 : 常量名 常量值 功能定义 USB2812_TRIGTYPE_EDGE 0x0000 边沿触发 USB2812_TRIGTYPE_PULSE 0x0001 脉冲触发 ( 电平方式 ), 适用于采集馒头波信号 TriggerDir AD 外触发方式使用信号方向 它的其选项值如下表 : 常量名 常量值 功能定义 USB2812_TRIGDIR_NEGATIVE 0x0000 负向触发 ( 低脉冲 / 下降沿触发 ) USB2812_TRIGDIR_POSITIVE 0x0001 正向触发 ( 高脉冲 / 上升沿触发 ) USB2812_TRIGDIR_POSIT_NEGAT 0x0002 正负向触发 ( 高 / 低脉冲或上升 / 下降沿触发 ) TrigLevelVolt 触发电平, 取值范围为 (+10000mV mV) TrigWindow 触发灵敏窗时间值, 取值范围为 (1-255), 单位为 0.5 微秒 GroundingMode 接地方式 ( 单端或双端 ) 选择 : 常量名 常量值 功能定义 USB2812_GNDMODE_SE 0x0000 单端方式 (SE:Single end) USB2812_GNDMODE_DI 0x0001 双端方式 (DI:Differential) 21

22 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 相关函数 : InitDeviceAD LoadParaAD SaveParaAD 第五章数据格式转换与排列规则 第一节 AD 原始数据 LSB 转换成电压值 Volt 的换算方法 在换算过程中弄清模板精度 ( 即 Bit 位数 ) 是很关键的, 因为它决定了 LSB 数码的总宽度 CountLSB 比 如 12 位的模板 CountLSB 为 4096 其他类型同理均按 2 n =LSB 总数 (n 为 Bit 位数 ) 换算即可 压值 值 量程 ( 毫伏 ) 计算机语言换算公式 ( 标准 C 语法 ) Volt 取值范围 mv ±10000 Volt = ( /8192) * (ADBuffer[0] &0x1FFF) [ , ] ±5000 Volt = ( /8192) * (ADBuffer[0] &0x1FFF) [ , ] ±2500 Volt = ( /8192) * (ADBuffer[0]&0x1FFF) [ , ] 0~10000 Volt = ( /8192) * (ADBuffer[0] &0x1FFF) [0.00, ] 换算举例 :( 设量程为 ±10000mV, 这里只转换第一个点 ) Visual C++&C++Builder: USHORT Lsb; // 定义存放标准 LSB 原码的变量 float Volt; // 定义存放转换后的电压值的变量 float PerLsbVolt = /8192; // 求出每个 LSB 原码单位电压值 Lsb = ADBuffer[0] &0x1FFF; Volt = PerLsbVolt * Lsb ; // 用单位电压值与 LSB 原码数量相乘减去偏移求得实际电 Dim Lsb As Long ' 定义存放标准 LSB 原码的变量 Dim Volt As Single ' 定义存放转换后的电压值的变量 Dim PerLsbVolt As Single PerLsbVolt = /8192 ' 求出每个 LSB 原码单位电压值 Lsb = ADBuffer(0) AND 8191 ' 将其转换成无符号 13 位有效数据 Volt = PerLsbVolt * Lsb ' 用单位电压值与 LSB 原码数量相乘减去偏移求得实际电压值 Lsb : Word; // 定义存放标准 LSB 原码的变量 Volt :Single; // 定义存放转换后的电压值的变量 PerLsbVolt : Single; PerLsbVolt := /8192; // 求出每个 LSB 原码单位电压值 Lsb := ADBuffer[0] &0x1FFF; Volt := PerLsbVolt * Lsb ; // 用单位电压值与 LSB 原码数量相乘减去偏移求得实际电压 第二节 AD 采集函数的 ADBuffer 缓冲区中的数据排放规则 当首末通道相等时, 即为单通道采集, 假如 FirstChannel=5, LastChannel=5, 其排放规则如下 : 数据缓冲区索引号 通道号 两通道采集 (CH0 CH1) 数据缓冲区索引号

23 北京阿尔泰科技发展有限公司通道号 四通道采集 (CH0 - CH3) 数据缓冲区索引号 通道号 其他通道方式以此类推 如果用户是进行连续不间断循环采集, 即用户只进行一次初始化设备操作, 然后不停的从设备上读取 AD 数据, 那么需要用户特别注意的是应处理好各通道数据排列和对齐问题, 尤其任意通道数采集时 否则, 用户无法将规则排放在缓冲区中的各通道数据正确分离出来 怎样正确处理呢? 我们建议的方法是, 每次从设备上读取的点数应置为所选通道数量的整数倍长 ( 在 USB 设备上同时也应 32 的整数倍 ), 这样便能保证每读取的这批数据在缓冲区中的相应位置始终固定对应于某一个通道的数据 比如用户要求对 1 2 两个 AD 通道的数据进行连续循环采集, 则置每次读取长度为其 2 的整倍长 2n(n 为每个通道的点数 ), 这里设为 2048 试想, 如此一来, 每次读取的 2048 个点中的第一个点始终对应于 1 通道数据, 第二个点始终对应于 2 通道, 第三个点再应于 1 通道, 第四个点再对应于 2 通道 以此类推 直到第 2047 个点对应于 1 通道数据, 第 2048 个点对应 2 通道 这样一来, 每次读取的段长正好包含了从首通道到末通道的完整轮回, 如此一来, 用户只须按通道排列规则, 按正常的处理方法循环处理每一批数据 而对于其他情况也是如此, 比如 3 个通道采集, 则可以使用 3n(n 为每个通道的点数 ) 的长度采集 为了更加详细地说明问题民, 请参考下表 ( 演示的是采集 共三个通道的情况 ) 由于使用连续采样方式, 所以表中的数据序列一行的数字变化说明了数据采样的连续性, 即随着时间的延续, 数据的点数连续递增, 直至用户停止设备为止, 从而形成了一个有相当长度的连续不间的多通道数据链 而通道序列一行则说明了随着连续采样的延续, 其各通道数据在其整个数据链中的排放次序, 这是一种非常规则而又绝对严格的顺序 但是这个相当长度的多通道数据链则不可能一次通过设备对象函数如 ReadDeviceAD 函数读回, 即便不考虑是否能一次读完的问题, 但对用户的实时数据处理要求来说, 一次性读取那么长的数据, 则往往是相当矛盾的 因此我们就得分若干次分段读取 但怎样保证既方便处理, 又不易出错, 而且还高效 还是正如前面所说, 采用通道数的整数倍长读取每一段数据 如表中列举的方法 1( 为了说明问题, 我们每读取一段数据只读取 2n 即 3*2=6 个数据 ) 从方法 1 不难看出, 每一段缓冲区中的数据在相同缓冲区索引位置都对应于同一个通道 而在方法 2 中由于每次读取的不是通道整数倍长, 则出现问题, 从表中可以看出, 第一段缓冲区中的 0 索引位置上的数据对应的是第 1 通道, 而第二段缓冲区中的 0 索引位置上的数据则对应于第 2 通道的数据, 而第三段缓冲区中的数据则对应于第 3 通道, 这显然不利于循环有效处理数据 在实际应用中, 我们在遵循以上原则时, 应尽可能地使每一段缓冲足够大, 这样, 可以一定程度上减少数据采集程序和数据处理程序的 CPU 开销量 数据序列 通道序列 方法 缓冲区号第一段缓冲第二段缓冲区第三段缓冲区第 n 段缓冲 方法 第一段缓冲区第二段缓冲区第三段缓冲区第四段缓冲区第五段缓冲区第 n 段缓 第三节 DA 电压值转换成 LSB 原码数据的换算方法 量程 ( 伏 ) 计算机语言换算公式 ( 标准 C 语法 ) Lsb 取值范围 0~5000mV Lsb = Volt / ( / 4096 ) [0,4095] 0~10000mV Lsb = Vol t/ ( / 4096 ) [0,4095] ±5000mV Lsb = Volt / ( / 4096) [0,4095] ±10000mV Lsb = Volt / ( / 4096 ) [0,4095] 23

24 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 请注意这里求得的 LSB 数据就是用于 WriteDeviceDA 中的 ndadata 参数的 第六章上层用户函数接口应用实例 如果您想快速的了解驱动程序的使用方法和调用流程, 以最短的时间建立自己的应用程序, 那么我们强烈建议您参考相应的简易程序 此种程序属于工程级代码, 可以直接打开不用作任何配置和代码修改即可编译通过, 运行编译链接后的可执行程序, 即可看到预期效果 如果您想了解硬件的整体性能 精度 采样连续性等指标以及波形显示 数据存盘与分析 历史数据回放等功能, 那么请参考高级演示程序 特别是许多不愿意编写任何程序代码的用户, 您可以使用高级程序进行采集 显示 存盘等功能来满足您的要求 甚至可以用我们提供的专用转换程序将高级程序采集的存盘文件转换成相应格式, 即可在 Excel MatLab 第三方软件中分析数据 ( 此类用户请最好选用通过 Visual C++ 制作的高级演示系统 ) 第一节 简易程序演示说明一 怎样使用 ReadDeviceAD 函数进行 AD 连续数据采集其详细应用实例及工程级代码请参考 Visual C++ 简易演示系统及源程序, 您先点击 Windows 系统的 [ 开始 ] 菜单, 再按下列顺序点击, 即可打开基于 VC 的 Sys 工程 ( 主要参考 USB2812.h 和 Sys.cpp) [ 程序 ] [ 阿尔泰测控演示系统 ] [Microsoft Visual C++] [ 简易代码演示 ] [AD 采集演示源程序 ] 其简易程序默认存放路径为 : 系统盘 \ART\USB2812\SAMPLES\VC\SIMPLE\AD 二 怎样使用 SetDeviceDO 和 GetDeviceDI 函数进行开关量输入输出操作其详细应用实例及正确代码请参考 Visual C++ 简易演示系统及源程序, 您先点击 Windows 系统的 [ 开始 ] 菜单, 再按下列顺序点击, 即可打开基于 VC 的 Sys 工程 ( 主要参考 USB2812.h 和 Sys.cpp) [ 程序 ] [ 阿尔泰测控演示系统 ] [Microsoft Visual C++] [ 简易代码演示 ] [ 开关量演示源程序 ] 其默认存放路径为 : 系统盘 \ART\USB2812\SAMPLES\VC\SIMPLE\DIO 第二节 高级程序演示说明高级程序演示了本设备的所有功能, 您先点击 Windows 系统的 [ 开始 ] 菜单, 再按下列顺序点击, 即可打开基于 VC 的 Sys 工程 ( 主要参考 USB2812.h 和 DADoc.cpp) [ 程序 ] [ 阿尔泰测控演示系统 ] [Microsoft Visual C++] [ 高级代码演示 ] 其默认存放路径为 : 系统盘 \ART\USB2812\SAMPLES\VC\ADVANCED 其他语言的演示可以用上面类似的方法找到 第七章基于 USB 总线的大容量连续数据采集详述 与 ISA PCI 设备同理, 使用子线程跟踪 AD 转换进度, 并进行数据采集是保持数据连续不间断的最佳方案 但是与 ISA 总线设备不同的是,USB 设备在这里不使用动态指针去同步 AD 转换进度, 因为 ISA 设备环形内存池的动态指针操作是一种软件化的同步, 而 USB 设备不再有软件化的同步, 而完全由硬件和驱动程序自动完成 这样一来, 用户要用程序方式实现连续数据采集, 其软件实现就显得极为容易 每次用 ReadDeviceAD 函数读取 AD 数据时, 那么设备驱动程序会按照 AD 转换进度将 AD 数据一一放进用户数据缓冲区, 当完成该次所指定的点数时, 它便会返回, 当您再次用这个函数读取数据时, 它会接着上一次的位置传递数据到用户数据缓冲区 只是要求每两次 ReadDeviceAD 之间的时间间隔越短越好 但是由于我们的设备是通常工作在一个单 CPU 多任务的环境中, 由于任务之间的调度切换非常平凡, 特别是当用户移动窗口 或弹出对话框等, 则会使当前线程猛地花掉大量的时间去处理这些图形操作, 因此如果 24

25 北京阿尔泰科技发展有限公司处理不当, 则将无法实现高速连续不间断采集, 那么如何更好的克服这些问题呢? 用子线程则是必须的 ( 在这里我们称之为数据采集线程 ), 但这还不够, 必须要求这个线程是绝对的工作者线程, 即这个线程在正常采集中不能有任何窗口等图形操作 只有这样, 当用户进行任何窗口操作时, 这个线程才不会被堵塞, 因此可以保证正常连续的数据采集 但是用户可能要问, 不能进行任何窗口操作, 那么我如何将采集的数据显示在屏幕上呢? 其实很简单, 再开辟一个子线程, 我们称之数据处理线程, 也叫用户界面线程 最初, 数据处理线程不做任何工作, 而是在 Win32 API 函数 WaitForSingleObject 的作用下进入睡眠状态, 此时它不消耗 CPU 任何时间, 即可保证其他线程代码有充分的运行机会 ( 这里当然主要指数据采集线程 ), 当数据采集线程取得指定长度的数据到用户空间时, 则再用 Win32 API 函数 SetEvent 将指定事件消息发送给数据处理线程, 则数据处理线程即刻恢复运行状态, 迅速对这批数据进行处理, 如计算 在窗口绘制波形 存盘等操作 可能用户还要问, 既然数据处理线程是非工作者线程, 那么如果用户移动窗口等操作堵塞了该线程, 而数据采集线程则在不停地采集数据, 那数据处理线程难道不会因此而丢失数据采集线程发来的某一段数据吗? 如果不另加处理, 这个情况肯定有发生的可能 但是, 我们采用了一级缓冲队列和二级缓冲队列的设计方案, 足以避免这个问题 即假设数据采集线程每一次从设备上取出 8K 数据, 那么我们就创建一个缓冲队列, 在用户程序中最简单的办法就是开辟一个两维数组如 ADBuffer[Count][DataLen], 我们将 DataLen 视为数据采集线程每次采集的数据长度,Count 则为缓冲队列的成员个数 您应根据您的计算机物理内存大小和总体使用情况来设定这个数 假如我们设成 32, 则这个缓冲队列实际上就是数组 ADBuffer[32][8192] 的形式 那么如何使用这个缓冲队列呢? 方法很简单, 它跟一个普通的缓冲区如一维数组差不多, 唯一不同是, 两个线程首先要通过改变 Count 字段的值, 即这个下标 Index 的值来填充和引用由 Index 下标指向某一段 DataLen 长度的数据缓冲区 需要注意的两个线程不共用一个 Index 下标变量 具体情况是当数据采集线程在 AD 部件被 InitDeviceAD 初始化之后, 首次采集数据时, 则将自己的 ReadIndex 下标置为 0, 即用第一个缓冲区采集 AD 数据 当采集完后, 则向数据处理线程发送消息, 且两个线程的公共变量 SegmentCounts 加 1,( 注意 SegmentCounts 变量是用于记录当前时刻缓冲队列中有多少个已被数据采集线程使用了, 但是却没被数据处理线程处理掉的缓冲区数量 ) 然后再接着将 ReadIndex 偏移至 1, 再用第二个缓冲区采集数据 再将 SegmentCounts 加 1, 至到 ReadIndex 等于 15 为止, 然后再回到 0 位置, 重新开始 而数据处理线程则在每次接受到消息时判断有多少由于自已被堵塞而没有被处理的缓冲区个数, 然后逐一进行处理, 最后再从 SegmentCounts 变量中减去在所接受到的当前事件下所处理的缓冲区个数 因此, 即便应用程序突然很忙, 使数据处理线程没有时间处理已到来的数据, 但是由于缓冲区队列的缓冲作用, 可以让数据采集线程先将数据连续缓存在这个区域中, 由于这个缓冲区可以设计得比较大, 因此可以缓冲很大的时间, 这样即便是数据处理线程由于系统的偶而繁忙面被堵塞, 也很难使数据丢失 而且通过这种方案, 用户还可以在数据采集线程中对 SegmentCounts 加以判断, 观察其值是否大小了 32, 如果大于, 则缓冲区队列肯定因数据处理采集的过度繁忙而被溢出, 如果溢出即可报警 因此具有强大的容错处理 25

26 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 缓冲队列 padbuffer0 填充由 ReadIndex 指向的缓冲区 padbuffer1 padbuffer2 处理由 CurrentIndex 指向的缓冲区 数据采集线程 padbuffer3 数据处理线程 数据流向 padbuffer4 : : 数据流向 发出同步信号 SetEvent padbuffern-1 padbuffern 等待同步信号 WaitForSingleObjec 同步事件 hevent 下面只是简要的策略说明, 其详细应用实例请参考 Visual C++ 测试与演示系统, 您先点击 Windows 系统的 [ 开始 ] 菜单, 再按下列顺序点击, 即可打开基于 VC 的 Sys 工程 [ 程序 ] [ 阿尔泰测控演示系统 ] [Microsoft Visual C++ Sample ] 下面只是基于 C 语言的简要的策略说明, 其详细应用实例及正确代码请参考 Visual C++ 测试与演示系统, 您先点击 Windows 系统的 [ 开始 ] 菜单, 再按下列顺序点击, 即可打开基于 VC 的 Sys 工程 (ADDoc.h 和 ADDoc.cpp) [ 程序 ] [ 阿尔泰测控演示系统 ] [Microsoft Visual C++ Sample] 然后, 您着重参考 ADDoc.cpp 源文件中以下函数 : void CADDoc::StartDeviceAD() // 启动线程函数 UINT ReadDataThread (PVOID hwnd) // 读数据线程 UINT ProcessDataThread (PVOID hwnd) // 绘制数据线程 void CADDoc::StopDeviceAD() // 终止采集函数 第八章公共接口函数介绍 这部分函数不参与本设备的实际操作, 它只是为您编写数据采集与处理程序时的有力手段, 使您编写应用程序更容易, 使您的应用程序更高效 26

27 北京阿尔泰科技发展有限公司 第一节 公用接口函数总列表 ( 每个函数省略了前缀 USB2812_ ) 函数名 函数功能 备注 1 创建 Visual Basic 子线程, 线程数量可达 32 个以上 CreateVBThread 在 VB 环境中建立子线程对象 在 VB 中可实现多线程 TerminateVBThread 终止 VB 的子线程 CreateSystemEvent 创建系统内核事件对象 用于线程同步或中断 ReleaseSystemEvent 释放系统内核事件对象 2 文件对象操作函数 CreateFileObject 初始设备文件对象 WriteFile 请求文件对象写用户数据到磁盘文件 ReadFile 请求文件对象读数据到用户空间 SetFileOffset 设置文件指针偏移 GetFileLength 取得文件长度 ReleaseFile 释放已有的文件对象 GetDiskFreeBytes 取得指定磁盘的可用空间 ( 字节 ) 适用于所有设备 3 各种参数保存和读取函数 SaveParaInt 保存整型参数到注册表 LoadParaInt 从注册表中读取整型参数值 SaveParaString 保存字符参数到注册表 LoadParaString 从注册表中读取字符参数值 4 其他函数 kbhit 探测用户是否有击键动作 getch 等待并获取用户击键值 GetLastErrorEx 取得驱动函数错误信息 第二节 线程操作函数原型说明 ( 如果您的 VB6.0 中线程无法正常运行, 可能是 VB6.0 语言本身的问题, 请选用 VB5.0) 在 VB 环境中, 创建子线程对象, 以实现多线程操作 BOOL CreateVBThread(HANDLE *hthread, LPTHREAD_START_ROUTINE RoutineAddr) Declare Function CreateVBThread Lib "USB2812" (ByRef hthread As Long, _ ByVal RoutineAddr As Long ) As Boolean 功能 : 该函数在 VB 环境中解决了不能实现或不能很好地实现多线程的问题 通过该函数用户可以很轻松地实现多线程操作 参数 : hthread 若成功创建子线程, 该参数将返回所创建的子线程的句柄, 当用户操作这个子线程时将用到这个句柄, 如启动线程 暂停线程以及删除线程等 RoutineAddr 作为子线程运行的函数的地址, 在实际使用时, 请用 AddressOf 关键字取得该子线程函数的地址, 再传递给 CreateVBThread 函数 返回值 : 当成功创建子线程时, 返回 TRUE, 且所创建的子线程为挂起状态, 用户需要用 Win32 API 函数 27

28 USB2811 WIN2000/XP 驱动程序使用说明书版本 : ResumeThread 函数启动它 若失败, 则返回 FALSE, 用户可用 GetLastError 捕获当前错误码 相关函数 : CreateVBThread TerminateVBThread 注意 : RoutineAddr 指向的函数或过程必须放在 VB 的模块文件中, 如 USB2812.Bas 文件中 Visual Basic 程序举例 : ' 在模块文件中定义子线程函数 ( 注意参考实例 ) Function NewRoutine() As Long ' 定义子线程函数 : ' 线程运行代码 NewRoutine = 1 ' 返回成功码 End Function ' ' 在窗体文件中创建子线程 : Dim hnewthread As Long If Not CreateVBThread(hNewThread, AddressOf NewRoutine) Then ' 创建新子线程 MsgBox " 创建子线程失败 " Exit Sub End If ResumeThread (hnewthread) ' 启动新线程 : : 在 VB 中, 删除子线程对象 BOOL TerminateVBThread(HANDLE hthread) Declare Function TerminateVBThread Lib "USB2812" (ByVal hthread As Long) As Boolean 功能 : 在 VB 中删除由 CreateVBThread 创建的子线程对象 参数 :hthread 指向需要删除的子线程对象的句柄, 它应由 CreateVBThread 创建 返回值 : 当成功删除子线程对象时, 返回 TRUE, 否则返回 FALSE, 用户可用 GetLastError 捕获当前错误码 相关函数 : CreateVBThread TerminateVBThread Visual Basic 程序举例 : : If Not TerminateVBThread (hnewthread) ' 终止子线程 MsgBox " 创建子线程失败 " Exit Sub End If : 创建内核系统事件 HANDLE CreateSystemEvent(void) 28

29 北京阿尔泰科技发展有限公司 Declare Function CreateSystemEvent Lib " USB2812 " ( ) As Long Function CreateSystemEvent( ) : Integer; StdCall; External 'USB2812' Name ' CreateSystemEvent '; CreateSystemEvent Return hevent Object 功能 : 创建系统内核事件对象, 它将被用于中断事件响应或数据采集线程同步事件 参数 : 无任何参数 返回值 : 若成功, 返回系统内核事件对象句柄, 否则返回 -1( 或 INVALID_HANDLE_VALUE) 释放内核系统事件 BOOL ReleaseSystemEvent(HANDLE hevent) Declare Function ReleaseSystemEvent Lib " USB2812 " (ByVal hevent As Long) As Boolean Function ReleaseSystemEvent(hEvent : Integer) : Boolean; 请参见相关演示程序 StdCall; External 'USB2812' Name ' ReleaseSystemEvent '; 功能 : 释放系统内核事件对象 参数 :hevent 被释放的内核事件对象 它应由 CreateSystemEvent 成功创建的对象 返回值 : 若成功, 则返回 TRUE 第三节 文件对象操作函数原型说明 创建文件对象 函数原型 : HANDLE CreateFileObject (HANDLE hdevice, LPCTSTR strfilename, int Mode) Declare Function CreateFileObject Lib "USB2812" (ByVal hdevice As Long, _ Function CreateFileObject ( hdevice : Integer; 请参见相关演示程序 strfilename : string; Mode : Integer) : Integer; ByVal strfilename As String, _ ByVal Mode As Integer) As Long Stdcall; external 'USB2812' Name ' CreateFileObject '; 29

30 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 功能 : 初始化设备文件对象, 以期待 WriteFile 请求准备文件对象进行文件操作 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 或 CreateDeviceEx 创建 strfilename 与新文件对象关联的磁盘文件名, 可以包括盘符和路径等信息 在 C 语言中, 其语法格式如 : C:\\USB2812\\Data.Dat, 在 Basic 中, 其语法格式如 : C:\USB2812\Data.Dat Mode 文件操作方式, 所用的文件操作方式控制字定义如下 ( 可通过或指令实现多种方式并操作 ): 常量名常量值功能定义 USB2812_modeRead 0x0000 只读文件方式 USB2812_modeWrite 0x0001 只写文件方式 USB2812_modeReadWrite 0x0002 既读又写文件方式 USB2812_modeCreate 0x1000 如果文件不存在可以创建该文件, 如果存在, 则重建此文 件, 且清 0 返回值 : 若成功, 则返回文件对象句柄 相关函数 : CreateDevice CreateFileObject WriteFile ReadFile ReleaseFile ReleaseDevice 通过设备对象, 往指定磁盘上写入用户空间的采样数据 函数原型 : BOOL WriteFile(HANDLE hfileobject, PVOID pdatabuffer, LONG nwritesizebytes) Declare Function WriteFile Lib "USB2812" (ByVal hfileobject As Long,_ Function WriteFile(hFileObject: Integer; 详见相关演示程序 pdatabuffer : Pointer; nwritesizebytes : Integer) : Boolean; ByRef pdatabuffer As Byte,_ Stdcall; external 'USB2812' Name ' WriteFile '; ByVal nwritesizebytes As Long) As Boolean 功能 : 通过向设备对象发送 写磁盘消息, 设备对象便会以最快的速度完成写操作 注意为了保证写入的数据是可用的, 这个操作将与用户程序保持同步, 但与设备对象中的环形内存池操作保持异步, 以得到更高的数据吞吐量, 其文件名及路径应由 CreateFileObject 函数中的 strfilename 指定 参数 : hfileobject 设备对象句柄, 它应由 CreateFileObject 创建 pdatabuffer 用户数据空间地址, 可以是用户分配的数组空间 nwritesizebytes 告诉设备对象往磁盘上一次写入数据的长度 ( 以字节为单位 ) 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateFileObject WriteFile ReadFile ReleaseFile 30

31 北京阿尔泰科技发展有限公司 通过设备对象, 从指定磁盘文件中读采样数据 函数原型 : BOOL ReadFile( HANDLE hfileobject, PVOID pdatabuffer, LONG OffsetBytes, LONG nreadsizebytes) Declare Function ReadFile Lib "USB2812" ( ByVal hfileobject As Long, _ Function ReadFile( hfileobject : Integer; 详见相关演示程序 pdatabuffer : Pointer; OffsetBytes : Integer; nreadsizebytes : Integer) : Boolean; ByRef pdatabuffer As Integer, _ ByVal OffsetBytes As Long, _ Stdcall; external 'USB2812' Name ' ReadFile '; ByVal nreadsizebytes As Long) As Boolean 功能 : 将磁盘数据从指定文件中读入用户内存空间中, 其访问方式可由用户在创建文件对象时指定 参数 : hfileobject 设备对象句柄, 它应由 CreateFileObject 创建 pdatabuffer 用于接受文件数据的用户缓冲区指针, 可以是用户分配的数组空间 OffsetBytes 指定从文件开始端所偏移的读位置 nreadsizebytes 告诉设备对象从磁盘上一次读入数据的长度 ( 以字为单位 ) 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateFileObject WriteFile ReadFile ReleaseFile 设置文件偏移位置 函数原型 : BOOL SetFileOffset (HANDLE hfileobject, LONG noffsetbytes) Declare Function SetFileOffset Lib "USB2812" (ByVal hfileobject As Long, Function SetFileOffset ( hfileobject : Integer; 详见相关演示程序 noffsetbytes : LongInt) : Boolean; ByVal noffsetbytes As Long) As Boolean Stdcall; external 'USB2812' Name ' SetFileOffset '; 31

32 USB2811 WIN2000/XP 驱动程序使用说明书 版本 : 功能 : 设置文件偏移位置, 用它可以定位读写起点 参数 :hfileobject 文件对象句柄, 它应由 CreateFileObject 创建 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateFileObject WriteFile ReadFile ReleaseFile 取得文件长度 ( 字节 ) 函数原型 : ULONG GetFileLength (HANDLE hfileobject) Declare Function GetFileLength Lib "USB2812" (ByVal hfileobject As Long) As Long Function GetFileLength (hfileobject : Integer) : LongWord; 详见相关演示程序 Stdcall; external 'USB2812' Name ' GetFileLength '; 功能 : 取得文件长度 参数 :hfileobject 设备对象句柄, 它应由 CreateFileObject 创建 返回值 : 若成功, 则返回 >1, 否则返回 0, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateFileObject WriteFile ReadFile ReleaseFile 释放设备文件对象 函数原型 : BOOL ReleaseFile(HANDLE hfileobject) Declare Function ReleaseFile Lib "USB2812" (ByVal hfileobject As Long) As Boolean Function ReleaseFile(hFileObject : Integer) : Boolean; 详见相关演示程序 Stdcall; external 'USB2812' Name ' ReleaseFile '; 功能 : 释放设备文件对象 参数 :hfileobject 设备对象句柄, 它应由 CreateFileObject 创建 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : CreateFileObject WriteFile ReadFile ReleaseFile 取得指定磁盘的可用空间 LONGLONG GetDiskFreeBytes(LPCTSTR strdiskname ) 32

33 北京阿尔泰科技发展有限公司 Declare Function GetDiskFreeBytes Lib "USB2812" (ByVal strdiskname As String ) As Currency GetDiskFreeBytes DiskName Return Disk Free Space 功能 : 取得指定磁盘的可用剩余空间 ( 以字为单位 ) 参数 :strdiskname 需要访问的盘符, 若为 C 盘为 "C:\\", D 盘为 "D:\\", 以此类推 返回值 : 若成功, 返回大于或等于 0 的长整型值, 否则返回零值, 用户可用 GetLastError 捕获错误码 注意使用 64 位整型变量 第四节 各种参数保存和读取函数原型说明 将整型变量的参数值保存在系统注册表中 函数原型 : BOOL SaveParaInt( HANDLE hdevice, LPCTSTR strparaname, int nvalue) Declare Function SaveParaInt Lib "USB2812" (ByVal hdevice As Long,_ Function SaveParaInt( hdevice : Integer; 详见相关演示程序 strparaname : String; nvalue : Integer) : Boolean; ByVal strparaname As String,_ ByVal nvalue As Integer) As Boolean Stdcall; external 'USB2812' Name ' SaveParaInt '; 功能 : 将整型变量的参数值保存在系统注册表中 具体保存位置视设备逻辑号而定 如逻辑号为 0 的其他参数保存位置为 :HKEY_CURRENT_USER\Software\Art\USB2812\Device-0\Others 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 或 CreateDeviceEx 创建 strparaname 整型参数字符名 它指名该参数在注册表中的字符键项 nvalue 整型参数值 它保存在由 strparaname 命名的键项里 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : SaveParaInt LoadParaInt SaveParaString LoadParaString 将整型变量的参数值从系统注册表中读出函数原型 : UINT LoadParaInt( HANDLE hdevice, LPCTSTR strparaname, int ndefaultval) Declare Function LoadParaInt Lib "USB2812" (ByVal hdevice As Long,_ ByVal strparaname As String,_ ByVal ndefaultval As Integer) As Long 33

34 USB2811 WIN2000/XP 驱动程序使用说明书版本 : Function LoadParaInt ( hdevice : Integer; 详见相关演示程序 strparaname : String; ndefaultval: Integer) : Longword; Stdcall; external 'USB2812' Name ' LoadParaInt '; 功能 : 将整型变量的参数值从系统注册表中读出 读出参数值的具体位置视设备逻辑号而定 如逻辑号为 0 的其他参数保存位置为 :HKEY_CURRENT_USER\Software\Art\USB2812\Device-0\Others 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 或 CreateDeviceEx 创建 strparaname 整型参数字符名 它指名该参数在注册表中的字符键项 ndefaultval 若 strparaname 指定的键项不存在, 则由该参数指定的默认值返回 返回值 : 若指定的整型参数项存在, 则返回其整型值 否则返回由 ndefaultval 指定的默认值 相关函数 : SaveParaInt LoadParaInt SaveParaString LoadParaString 将字符变量的参数值保存在系统注册表中 函数原型 : BOOL SaveParaString ( HANDLE hdevice, LPCTSTR strparaname, LPCTSTR strparaval) Declare Function SaveParaString Lib "USB2812" (ByVal hdevice As Long,_ Function SaveParaString (hdevice : Integer; 详见相关演示程序 strparaname : String; strparaval: String) : Boolean; ByVal strparaname As String,_ ByVal strparaval As String) As Boolean Stdcall; external 'USB2812' Name ' SaveParaString'; 功能 : 将整型变量的参数值保存在系统注册表中 具体保存位置视设备逻辑号而定 如逻辑号为 0 的其他参数保存位置为 :HKEY_CURRENT_USER\Software\Art\USB2812\Device-0\Others 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 或 CreateDeviceEx 创建 strparaname 整型参数字符名 它指名该参数在注册表中的字符键项 strparaval 字符参数值 它保存在由 strparaname 命名的键项里 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : SaveParaInt LoadParaInt SaveParaString LoadParaString 将字符变量的参数值从系统注册表中读出 函数原型 : 34

35 北京阿尔泰科技发展有限公司 BOOL LoadParaString ( HANDLE hdevice, LPCTSTR strparaname, LPCTSTR strparaval, LPCTSTR strdefaultval) Declare Function LoadParaString Lib "USB2812" (ByVal hdevice As Long,_ Function LoadParaString ( hdevice : Integer; 详见相关演示程序 strparaname : String; strparaval : String; strdefaultval : String) : Boolean; ByVal strparaname As String,_ ByVal strparaval As String,_ ByVal strdefaultval As String) As Boolean Stdcall; external 'USB2812' Name ' LoadParaString '; 功能 : 将字符变量的参数值从系统注册表中读出 读出参数值的具体位置视设备逻辑号而定 如逻辑号为 0 的其他参数保存位置为 :HKEY_CURRENT_USER\Software\Art\USB2812\Device-0\Others 参数 : hdevice 设备对象句柄, 它应由 CreateDevice 或 CreateDeviceEx 创建 strparaname 字符参数字符名 它指名该参数在注册表中的字符键项 strparaval 取得 strparaname 指定的键项的字符值 strdefaultval 若 strparaname 指定的键项不存在, 则由该参数指定的默认值返回 返回值 : 若成功, 则返回 TRUE, 否则返回 FALSE, 用户可以用 GetLastError 捕获错误码 相关函数 : SaveParaInt LoadParaInt SaveParaString LoadParaString 第五节 其他函数原型说明 探测用户是否有按键动作 函数原型 : BOOL kbhit (void) Declare Function kbhit Lib "USB2812" () As Boolean Function kbhit () : Boolean; 详见相关演示程序 Stdcall; external 'USB2812' Name ' kbhit '; 功能 : 探测用户是否用键盘按键动作, 主要应在基于 VB DELPHI 等控制台应用程序中 参数 : 无 返回值 : 若自上次探测过后, 若用户有键盘按键动作, 则返回 TRUE, 否则返回 FALSE 35

36 USB2811 WIN2000/XP 驱动程序使用说明书版本 : 相关函数 : getch kbhit 等待按键动作并返回按键值 函数原型 : char getch (void) Declare Function getch Lib "USB2812" () As String Function getch () : char; 详见相关演示程序 Stdcall; external 'USB2812' Name 'getch'; 功能 : 探等待用户键盘按键并以字符方式返回按键值, 主要应在基于 VB DELPHI 等控制台应用程序中 参数 : 无 返回值 : 若用户没有按键动作, 此函数一直不返回, 一旦用户有按键动作, 便立即返回, 且返回其当前按键值 (ACII 码 ) 相关函数 : getch kbhit 怎样获取驱动函数错误信息 函数原型 : DWORD GetLastErrorEx (LPCTSTR strfuncname, LPCTSTR strerrormsg) Declare Function GetLastErrorEx Lib "USB2812" (ByVal strfuncname As String,_ Function GetLastErrorEx (strfuncname: String; 详见相关演示程序 strerrormsg: String) : LongWord; ByVal strerrormsg As String) As Long Stdcall; external 'USB2812' Name ' GetLastErrorEx '; 功能 : 将当某个驱动函数出错时, 可以调用此函数获得具体的错误和错误信息字串 参数 : strfuncname 出错函数的名称 注意此函数必须是完整名称, 如 AD 初始化函数 USB2812_InitDeviceAD 出现错误, 此时调用该函数时, 此参数必须为 USB2812_InitDeviceAD, 否则得不到相应信息 strerrormsg 取得指定函数的错误信息串 返回值 : 返回错误码 相关函数 : 无 Visual C++ & C++Builder 程序举例 : char strerrormsg[256]; // 用于返回错误信息字串, 要求其空间足够大 DWORD dwerrorcode; int DeviceLgcID = 0; hdevice = USB2812_CreateDevice ( DeviceLgcID ); // 创建设备对象, 并取得设备对象句柄 if(hdevice == INVALIDE_HANDLE_VALUE); // 判断设备对象句柄是否有效 36

37 北京阿尔泰科技发展有限公司 { dwerrorcode = USB2812_GetLastErrorEx( USB2812_CreateDevice, strerrormsg); AfxMessageBox(strErrorMsg); // 以对话框方式显示错误信息 return; // 退出该函数 } : Visual Basic 程序举例 : Dim strerrormsg As String ' 用于返回错误信息字串, 要求其空间足够大 Dim dwerrorcode As Long Dim DeviceLgcID As Long DeviceLgcID = 0 hdevice = USB2812_CreateDevice ( DeviceLgcID ) ' 创建设备对象, 并取得设备对象句柄 If hdevice = INVALID_HANDLE_VALUE Then ' 判断设备对象句柄是否有效 dwerrorcode = USB2812_GetLastErrorEx( USB2812_CreateDevice, strerrormsg) MsgBox strerrormsg ' 以对话框方式显示错误信息 Exit Sub ' 退出该过程 End If : 37

软件产品帮助文档

软件产品帮助文档 USB2080 驱 动 程 序 使 用 说 明 书 For Win98/Me/2000/XP 第 一 章 版 权 信 息... 2 第 二 章 绪 论... 2 第 三 章 设 备 专 用 函 数 接 口 介 绍... 4 第 一 节 设 备 驱 动 接 口 函 数 列 表 ( 每 个 函 数 省 略 了 前 缀 USB2080_ )... 4 第 二 节 设 备 对 象 管 理 函 数 原 型 说

More information

u-18软件说明书.doc

u-18软件说明书.doc 北京迪阳公司软件版本 :4.1 发行时间 :2000 年 2 月 U18 数据采集卡软件开发使用说明书 北京迪阳公司 1 北京迪阳公司软件版本 :4.1 发行时间 :2000 年 2 月 提醒用户 : 通常情况下,WINDOWS 系统在安装时自带的 DLL 库和驱动不全, 所以您不管使用那种语言编程, 请您最好先安装上 Visual C++6.0 版本的软件, 方可使我们的驱动程序有更完备的运行环境

More information

01

01 01 关于本手册 本手册为阿尔泰科技推出的 NET2991 数据采集卡驱动程序使用手册, 其中包括版权信息与命名约定 使用纲要 各功能操作流程介绍 设备操作函数接口介绍 硬件参数结构 数据格式转换与排列规则 上层用户函数接口应用实例 共用函数介绍 修改历史等 文档版本 :V6.00.01 1 目 录 关于本手册... 1 1 版权信息与命名约定...4 1.1 版权信息...4 1.2 命名约定...4

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

行业

行业 PCL-1800 PCL-1800 1.1...2 1.1.1 1K FIFO...2 1.1.2...2 1.1.3 16...3 1.1.4...3 1.1.5...3 1.1.6...3 1.2...3 1.3...4 1.4...5 2.1...5 2.2...6 2.2.1...6 2.2.2...6 2.2.3 D/A...7 2.2.4...7 2.2.5 TRIG0 GATE0...8

More information

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft Word - 小心翼翼的二十一點N.doc 投 稿 類 別 : 資 訊 類 篇 名 : 小 心 翼 翼 的 二 十 一 點 作 者 : 陳 鈺 文 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 李 伯 謙 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 胡 家 媛 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 指 導 老 師 : 周 曉 玲 老 師 陳 思 亮 主 任 壹 前 言 一 研 究 動 機 平

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

行业

行业 PCI-1711/1711L 1.1...2 1.1.1...2 1.1.2...2 1.1.3 FIFO...2 1.1.4...2 1.1.5 16 16...3 1.2...3 2.1...3 2.2...3 2.2.1... 2.2.2...8 2.3...10 2.3.1...10 2.3.2... 11 2.3.3...12 2.3.4...13 2.4.5...14 3.1...16

More information

行业

行业 PCL-818HD/HG/L PCL-818HD/HG/L 1.1...2 1.1.1 /...2 1.1.2 ID...2 1.2...3 1.3...3 2.1...3 2.2...3 2.2.1...4 2.2.2...4 2.2.3 DMA...5 2.2.4...5 2.2.5 D/A...5 2.2.6...6 2.2.7 EXE.trigger GATE0...6 2.2.8 FIFO

More information

行业

行业 PCI-1710 1.1...2 1.1.1...2 1.1.2...2 1.1.3 FIFO( )...2 1.1.4...2 1.1.5...2 1.1.6 16 16...3 1.1.7...3 1.2...3 1.3...3 2.1...3 2.2...4 2.2.1...4 2.2.2...5 2.3...9 2.3.1...10 2.3.2... 11 2.3.3...12 2.3.4...12

More information

KPCI KPCI-815 TEL: Fax:

KPCI KPCI-815 TEL: Fax: KPCI-815 1 KPCI-815 Ver 2.0 TEL:010-62527213625272146264370562528727 Fax:010-62657424 KPCI-815 2 1 2 KPCI-815 TEL:010-62527213625272146264370562528727 Fax:010-62657424 KPCI-815 3 KPCI-815 KPCI-815 PCI

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

USB2815数据采集卡

USB2815数据采集卡 USB2852 数据采集卡 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目 录 目录...1 第一章功能概述...1 第一节 产品应用...1 第二节 AD 模拟量输入功能...1 第三节 DI 数字量输入功能...2 第四节 DO 数字量输出功能...2 第五节 以太网连接功能...2 第六节 板卡尺寸...2 第七节 产品安装核对表...2 第八节 安装指导...2

More information

行业

行业 PCI-1716/1716L 1.1...2 1.1.1...2 1.1.2 / /SD*/BU*...2 1.1.3 FIFO( )...2 1.1.4...2 1.1.5 16 16...3 1.1.6...3 1.1.7 ID...3 1.2...3 2.1...3 2.2...4 2.2.1...4 2.2.2...6 2.3... 11 2.3.1... 11 2.3.2...12 2.3.3...13

More information

USB2089数据采集卡

USB2089数据采集卡 USB2080 数据采集卡 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目 录 目录...1 第一章功能概述...1 第一节 产品应用...1 第二节 总线及制作工艺特点...1 第三节 工作主频...1 第四节 AD 模拟量输入功能...1 第五节 DI 数字量输入功能...2 第六节 DO 数字量输出功能...2 第七节 板卡外形尺寸...2 第八节

More information

KPCI KPCI-815

KPCI KPCI-815 KPCI-815 1 KPCI-815 Ver 2.0 KPCI-815 2 1 2 KPCI-815 KPCI-815 3 KPCI-815 KPCI-815 PCI 8 KPCI-815 I/O 37 D L H L 12 H 16 2.1 PCI 32 33MHz 132MBS 2.2 32 / 16 0V~5V0V~10V*5V10V 10M 100K A/D A/D / 0.2%FRS 2.3

More information

Microsoft Word - CX1000-HMI_程序开发_PLC通讯

Microsoft Word - CX1000-HMI_程序开发_PLC通讯 用 VB.Net 开发 CX1000 的 HMI 第二部分和 TwinCAT PLC 通讯 一 TwinCAT 动态库 TwinCAT.Ads.dll The TwinCAT.Ads.dll 是一个.NET 类库, 它提供和 ADS 设备通讯的类 如果 TwinCAT PLC 运行在 IPC 上, 则需要添加的类库是路径 \TwinCAT\ADS Api\.NET\v1.1.4322 下的 TwinCAT.Ads.dll

More information

行业

行业 PCI-1727U 快 速 安 装 使 用 手 册 PCI-1727U 快 速 安 装 使 用 手 册... 1 第 一 章 产 品 介 绍... 2 1.1 概 述...2 1.1.1 即 插 即 用 功 能...2 1.1.2 灵 活 的 电 压 输 出 范 围...2 1.1.3 板 卡 ID...2 1.2 特 点 :...2 1.3 选 型 指 导...2 第 二 章 安 装 与 测 试...

More information

(HMI) IO A

(HMI) IO A 6.5 6.5 (HMI) IO 6.52 6.52 6.5 2007 113 A 602 100086 010 82616619 010 62638166 www.kingview.com 4 7 25 38 43 52 63 68 86 SQL 95 99 WEB 105 Web Web Web I/O Microsoft Windows XP/NT/2000 I/O PLC PLC PLC PLC

More information

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc TwinCAT 2001.12.11 TwinCAT 1. TwinCAT... 3 2.... 4... 4...11 3. TwinCAT PLC... 13... 13 PLC IEC 61131-3... 14 4. TwinCAT... 17... 17 5. TwinCAT... 18... 18 6.... 19 Maschine.pro... 19... 27 7.... 31...

More information

产品硬件使用说明书

产品硬件使用说明书 PCI8002A 同步高速数据采集卡 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目录 目录...1 第一章功能概述...2 第一节 产品应用...2 第二节 总线及制作工艺特点...2 第三节 AD 模拟量输入功能...2 第四节 DI 数字量输入功能...3 第五节 DO 数字量输出功能...3 第六节 其他指标...3 第二章元件布局图及简要说明...4

More information

概述

概述 OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5

More information

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice 路 ESW 聯 USB Chapter 9 Applications For Windows Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice USB I/O USB / USB 3 料 2 1 3 路 USB / 列 料 料 料 LED

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

TC35短信发送程序设计

TC35短信发送程序设计 http://www.dragonsoft.net.cn/down/project/tc35_sms.rar TC35 AT /down/book/tc35_at.pdf TC35/TC35i GSM Modem TC35 GSM POS COM SIM DOWN COM E, vbcr AT VB6.0 1)C# http://www.yesky.com/softchannel/72342380468109312/20040523/1800310.shtml,

More information

6020

6020 6020 ... 1 1.1... 1 1.2... 1 1.3 6020... 2 1.3... 5 1.3.1... 5 1.3.2 ISA I/O (S1)... 5 1.3.3 (J4,5,6)... 6 1.3.4... 6... 9 2.1... 9 2.2... 9 2.3 COMPILING AND LINKING... 11 2.3.1 MICROSOFT C MICROSOFT

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

行业

行业 PCI-1751 1.1...2 1.2...2 1.3...2 1.4...3 2.1...3 2.2...3 2.2.1...3 2.2.2...3 2.2.3 JP4...4 2.2.4...4 2.3...5 2.3.1...6 2.3.2...7 2.4...12 2.4.1...13 2.4.2...13 2.4.3...14 3.1...16 3.1.1 /...16 3.1.2 /...17

More information

ISA-9620用户手册.PDF

ISA-9620用户手册.PDF ISA-9620 CAN v1.0 2004 01 08-1 - -------------------------------------------------------1 -------------------------------------------------------1 -------------------------------------------------------1

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_ 游 戏 厅 捕 鱼 技 巧 _ 天 天 酷 跑 游 戏 技 巧 巧 _ 2048 游 戏 技 巧, 游 戏 厅 打 鱼 技 152 http://www.500630.com 游 戏 厅 捕 鱼 技 巧 _ 天 天 酷 跑 游 戏 技 巧 2048 游 戏 技 巧, 游 戏 厅 打 鱼 技 巧 _ 现 在 拦 截 api 游 戏 厅 打 鱼 技 巧 的 教 程 到 处 都 是, 我 就 不 列 举

More information

PCI2003硬件说明书

PCI2003硬件说明书 ART2932 数据采集卡 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目录目录...1 第一章功能概述...1 第一节 产品应用...1 第二节 AD 模拟量输入功能...1 第三节 DA 模拟量输出功能...2 第四节 DI 数字量输入功能...2 第五节 DO 数字量输出功能...2 第六节 定时计数功能...2 第七节 其他指标...2 第八节 板卡尺寸...3

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

用户大会 论文集2.2.doc

用户大会 论文集2.2.doc MagGis MapGis GIS MagGis API DLL MapGis VC++ VB BC++ Delphi., Windows API MapGis VC++V Delphi Delphi Delphi MapGis Delphi Delphi Windows Delphi Delphi MapGis MapGis DLL API MapGis function _InitWorkArea(HINST:Integer):Integer;

More information

COMPACT

COMPACT OMPACT COMPACT-USB-8-12-2000 采集卡使用手册 武汉康柏科特科技有限公司 www.whcompact.com liutao@whcompact.com 技术支持 :13437156722 目录 COMPACT-USB-8-12-2000 采集卡... 1 第一章 COMPACT-USB-8-12-2000 采集卡接口及尺寸... 2 1.1 采集卡接口及定义... 2 1.2

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft Word - CIN-DLL.doc

Microsoft Word - CIN-DLL.doc 6.3. 调 用 动 态 链 接 库 (DLL) 相 对 于 CIN 来 讲,NI 更 推 荐 用 户 使 用 DLL 来 共 享 基 于 文 本 编 程 语 言 开 发 的 代 码 除 了 共 享 或 重 复 利 用 代 码, 开 发 人 员 还 能 利 用 DLL 封 装 软 件 的 功 能 模 块, 以 便 这 些 模 块 能 被 不 同 开 发 工 具 利 用 在 LabVIEW 中 使 用

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

本科学生毕业论文

本科学生毕业论文 15.1 USB 固件源码分析 第十二章 SLAVE FIFO 流传输 SLAVE FIFOUSB 固件源码仍然采用上一章节源码 15.2 FPGA 固件源码分析 module USB_FPGA( input ifclk_i, inout [7:0] fdata_b, output reg [1:0] faddr_o, output reg slrd_o, output reg slwr_o, output

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

行业

行业 PCI-1753/1753E 1.1...2 1.1.1...2 1.1.3...2 1.1.4...2 1.1.5...2 1.1.6...3 1.1.7 PCI-1753/1753E...3 1.2...3 1.3...3 1.4...4 2.1...4 2.2...4 2.2.1...4 2.2.2...5 2.2.3 JP1...5 2.3...5 2.3.1...6 2.3.2...7 2.4...12

More information

产品硬件使用说明书

产品硬件使用说明书 PCI8103 高速任意波形发生器 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目录 目录...1 第一章功能概述...2 第一节 产品应用...2 第二节 总线及制作工艺特点...2 第三节 DA 任意波形输出功能...2 第四节 DI/DO 数字量输入 / 输出功能...2 第五节 其他指标...3 第六节 产品安装核对表...3 第七节 安装指导...3

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

行业

行业 PCI-1713 1.1...2 1.1.1...2 1.1.2...2 1.1.3...2 1.1.4...2 1.2...2 1.3...3 1.4...3 2.1...4 2.2...4 2.2.1...4 2.2.2...6 2.3... 11 2.3.1... 11 3.1...13 3.1.1...13 3.1.2...14 3.2...15 4.1 4.2...16 4.2.1 ADSOFT/ADTRIG...16

More information

DVK530/531扩展板

DVK530/531扩展板 DVK720 扩展板 驱动移植手册 2014.04.03 V1.0 版权声明 本手册所有权由深圳市微雪电子有限公司独家持有 未经本公司的书 面许可, 不得以任何方式或形式进行修改 分发或复制本文档的任何 部分, 否则一切后果由违者自负 版本更新记录 版本日期说明 V1.0 2014.04.03 初始发布 深圳市微雪电子有限公司 www.waveshare.net I 目录 版权声明... I 版本更新记录...

More information

MATLAB 1

MATLAB 1 MATLAB 1 MATLAB 2 MATLAB PCI-1711 / PCI-1712 MATLAB PCI-1711 / PCI-1712 MATLAB The Mathworks......1 1...........2 2.......3 3................4 4. DAQ...............5 4.1. DAQ......5 4.2. DAQ......6 5.

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

数据采集编程指南 下篇 ni.com/china/daq

数据采集编程指南 下篇                                                                                    ni.com/china/daq 数 据 采 集 编 程 指 南 下 篇 目 录 数 据 存 储 与 文 件 I/O 1-8 同 步 ( 上 ) 9-13 同 步 ( 下 ) 14-21 特 别 篇 : 模 块 化 仪 器 22-26 数 据 存 储 与 文 件 I/O 简 介 本 期 内 容 将 介 绍 如 何 使 用 NI 数 据 采 集 板 卡 来 实 现 数 据 的 存 储 和 文 件 I/O 操 作 在 一 个 典 型 的

More information

ebook

ebook 3 3 3.1 3.1.1 ( ) 90 3 1966 B e r n s t e i n P ( i ) R ( i ) W ( i P ( i P ( j ) 1) R( i) W( j)=φ 2) W( i) R( j)=φ 3) W( i) W( j)=φ 3.1.2 ( p r o c e s s ) 91 Wi n d o w s Process Control Bl o c k P C

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

USB2813数据采集卡

USB2813数据采集卡 ART2750 任意波形发生器 硬件使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订 北京阿尔泰科技发展有限公司 目 录 目录...1 第一章功能概述...2 第一节 产品应用...2 第二节 DA 任意波形输出功能...2 第三节 其它硬件指标...2 第四节 板卡尺寸...2 第五节 产品安装核对表...3 第六节 安装指导...3 一 软件安装指导...3 二 硬件安装指导...3 第二章元件布局图...4

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

Visual Basic D 3D

Visual Basic D 3D Visual Basic 2008 2D 3D 6-1 6-1 - 6-2 - 06 6-2 STEP 1 5-2 (1) STEP 2 5-3 (2) - 6-3 - Visual Basic 2008 2D 3D STEP 3 User1 6-4 (3) STEP 4 User1 6-5 (4) - 6-4 - 06 STEP 5 6-6 (5) 6-3 6-3-1 (LoginForm) PictureBox1

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f 27 1 Vol.27 No.1 CEMENTED CARBIDE 2010 2 Feb.2010!"!!!!"!!!!"!" doi:10.3969/j.issn.1003-7292.2010.01.011 OPC 1 1 2 1 (1., 412008; 2., 518052), OPC, WinCC VB,,, OPC ; ;VB ;WinCC Application of OPC Technology

More information

Visual Basic AD/DA Visual Basic 2

Visual Basic AD/DA Visual Basic 2 4900H238 4900H237 4900H208 1 Visual Basic AD/DA Visual Basic 2 PCI AD/DA Visual Basic Visual Basic 3 4 3 3 4 AD/DA ID AD/DA PCI AD/DA 15 Visual Basic 17 5 20 PID Visual Basic 26 31 Visual Basic-------------------------------------------------------------

More information

Microsoft PowerPoint - BECKHOFF技术_ADS通讯 [Compatibility Mode]

Microsoft PowerPoint - BECKHOFF技术_ADS通讯 [Compatibility Mode] 的架构 ADS 的通讯机制 ADS-Client Request -> Confirmation Indication

More information

行业

行业 PCL-727 PCL-727 1.1...2 1.2...2 1.3...2 1.4...3 2.1...3 2.2...3 2.2.1...3 2.2.2...4 2.2.3...5 2.3...6 2.4...7 2.4.1...7 2.4.2...9 2.5...15 2.5.1...16 2.5.2...17 2.5.3...18 3.1...19 3.1.1...19 3.1.2 4~20mA...20

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

Microsoft PowerPoint - OPVB1基本VB.ppt

Microsoft PowerPoint - OPVB1基本VB.ppt 大 綱 0.VB 能 做 什 麼? CH1 VB 基 本 認 識 1.VB 歷 史 與 版 本 2.VB 環 境 簡 介 3. 即 時 運 算 視 窗 1 0.VB 能 做 什 麼? Visual Basic =>VB=> 程 式 設 計 語 言 => 設 計 程 式 設 計 你 想 要 的 功 能 的 程 式 自 動 化 資 料 庫 計 算 模 擬 遊 戲 網 路 監 控 實 驗 輔 助 自 動

More information

COMPACT

COMPACT OMPACT COMPACT-USB-8-16 系列采集卡使用手册 武汉康柏科特科技有限公司 www.whcompact.com liutao@whcompact.com 技术支持 :13437156722 目录 COMPACT-USB-8-16 采集卡... 1 第一章 COMPACT-USB-8-16 采集卡接口及尺寸... 2 1.1 采集卡接口及定义... 2 1.2 采集卡尺寸... 3

More information

Measurement Studio Expands Your Test and Measurement Programming Power

Measurement Studio Expands Your Test and Measurement Programming Power NI-DAQmx NI-DAQ NI-DAQmx NI-DAQ NI-DAQmx NI-DAQmx NI-DAQ NI-DAQmx NI-DAQmx LabVIEW LabWindows/CVI ANSI C Measurement Studio Visual Studio I/O 1. I/O API I/O NI NI NI NI ADE 1.NI-DAQmx NI & MAX DAQ Assistant

More information

378高雄市都市計畫說明書

378高雄市都市計畫說明書 378 高 雄 市 都 市 計 畫 說 明 書 案 名 : 變 更 高 雄 市 楠 梓 區 高 楠 段 二 七 九 地 號 等 八 筆 農 業 區 土 地 為 批 發 市 場 用 地 擬 定 申 請 單 位 : 高 雄 市 政 府 計 畫 範 圍 : 如 圖 示 法 令 依 據 : 都 市 計 畫 法 第 二 十 七 條 第 一 項 第 四 款 一 背 景 說 明 : ( 一 ) 本 市 現 有 果

More information

第一部分 绪论

第一部分 绪论 KPCI-1812 数据采集卡使用说明书 北京科瑞兴业科技有限公司 北京科瑞兴业科技有限公司 地址 : 北京市海淀区知春里 28 号开源商务写字楼 212/213 室 邮政编码 :100086 电话 :010-51650651 010-62527214 传真 :010-62657424 http://www.krxgk.com Sales E-mail: sgq@krxgk.com Tech Support

More information

行业

行业 PCI-1762 PCI-1762 1.1...2 1.1.1...2 1.1.2...2 1.1.3...2 1.1.4 PCI...2 1.1.5 ID...2 1.2...3 1.3...3 2.1...3 2.2...3 2.2.1 NC/NO(/)...3 2.2.2...4 2.2.2 ID...5 2.3...5 2.3.1...5 2.3.2...7 2.4...12 2.4.1...12

More information

Contents

Contents PISO-PS400 (Version 3.1) PISO-PS400 1 Warranty All products manufactured by ICPDAS Inc. are warranted against defective materials for a period of one year from the date of delivery to the original purchaser.

More information

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

ThreeDtunnel.doc

ThreeDtunnel.doc (12) 1 1. Visual Basic Private Sub LoadDatabase() Dim strip As String Dim straccount As String Dim strpassword As String Dim strdatabase As String Dim strtable As String Dim strsql As String Dim strtemp1

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V G Seagate Pipeline HD2 ST CS - 可用 Seagate Pipeline HD2 ST1000VM002 - 可用 1T Seagate SV35.5

K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V G Seagate Pipeline HD2 ST CS - 可用 Seagate Pipeline HD2 ST1000VM002 - 可用 1T Seagate SV35.5 注意请使用 5T 或 6T 的硬盘架 (WJ-ND400/ WJ-HDE400/WJ-HD716/WJ-HD616) 请不要在 5TB 或 6TB 硬盘底部安 2 颗螺丝 ( 下方标记 ), 因为螺丝要长于螺旋孔的深度 顶视图 底视图 1 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 500G Seagate Pipeline HD2 ST3500312CS

More information

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344> 1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

bingdian001.com

bingdian001.com 1. DLL(Dynamic Linkable Library) DLL ± lib EXE DLL DLL EXE EXE ± EXE DLL 1 DLL DLL DLL Windows DLL Windows API Visual Basic Visual C++ Delphi 2 Windows system32 kernel32.dll user32.dll gdi32.dll windows

More information

ActiveX Control

ActiveX Control ActiveX Control For Visual Basic 2005.NET [ 版本 : 1.0] 1 安裝 Windows 驅動程式 請依照下列步驟 : 1. 執行 Windows 驅動程式安裝程式 ( 此範例為 PIO-DIO) 驅動程式位置 : CD:\NAPDOS\PCI\PIO-DIO\dll_ocx\Driver http://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/pio-dio/dll_ocx/driver/

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

Contents

Contents PISO-PS600 (Version 1.3) PISO-PS600 Version 1.3 1 Warranty All products manufactured by ICPDAS Inc. are warranted against defective materials for a period of one year from the date of delivery to the original

More information

穨2700使用手冊.doc

穨2700使用手冊.doc Keithley 2700 13 CH Avg Ratio continuity Offset Compensation Ohms 80 (differential) 6 (22 ) (Half-rack size) 1000V/3A isolation/input 50000 EEE-488 RS-232 Digital I/O Trigger Link ActiveX Start-up software

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information

前言

前言 作 为 新 中 国 最 早 设 立 的 专 业 教 育 出 版 机 构, 高 等 教 育 出 版 社 始 终 坚 持 植 根 教 育 弘 扬 学 术 繁 荣 文 化 服 务 社 会 的 办 社 理 念, 开 拓 创 新, 砥 砺 前 行, 伴 随 着 新 中 国 教 育 事 业 的 不 断 发 展 壮 大, 经 过 60 年 的 奋 斗, 高 教 社 已 经 发 展 成 为 以 出 版 高 等 教

More information

8S E600Y 0773-CE

8S E600Y 0773-CE 控制面板及侧 背面端子 液晶电视快速操作引导 液晶电视快速操作引导 控制面 板 按键介 绍 控制面板按键及侧面端子介绍 感光头 红外接收器 指示灯 电源 开 关 按键 频 道- 频 道+ 音 量- 音 量+ 频道选择键 音量控制键 菜单 确定 返 回/主 页 确定键 返回/主页键 菜单键 背面端 子 介绍 USB1 光纤音频 输出 USB2 USB3 SD卡 SD卡槽 CA卡 V 注:当您使用非本机配送的重低音音箱连接本机

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

DAM6600

DAM6600 DAM6600 分布式 RS-485/ 以太网数据采集及控制系统 用户手册 版本 :V6.005 目录 目录...1 第一章 简介...2 1.1 概述...2 1.2 特点...2 1.3 产品图片...2 第二章 使用方法...3 2.1 工作要求...3 2.2 尺寸...3 2.3 模块安装...3 2.4 固定安装...3 2.5 面板说明...4 第三章 IO 模块说明...11 第四章

More information