Microsoft Word - CIN-DLL.doc



Similar documents
I

修改版-操作手册.doc

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

《C语言基础入门》课程教学大纲

登录、注册功能的测试用例设计.doc

第2章 数据类型、常量与变量

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

Microsoft Word - 第3章.doc

云信Linux SSH认证代理用户手册

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

世华财讯模拟操作手册

Template BR_Rec_2005.dot

国债回购交易业务指引

全国教师资格认定管理信息系统

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

乐视云视频发行平台 操作手册 V1.1

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和


Cybozu Garoon 3 管理员手册

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

教师上报成绩流程图

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

引言

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

øÕªß∂À≤Ÿ◊˜ ÷≤·

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

 编号:

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍 系 统 管 理 员 登 陆 班

第 一 部 分 MagiCAD for Revit 安 装 流 程

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

深圳市新亚电子制程股份有限公司

系统设计文档_样稿管理模块 V1.1_.doc

火车浏览器脚本制作教程

第3章 创建数据库

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

微软用户

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

操作手册

四川省农村义务教育学生

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

生产支援功能 使用说明书(IP-110 篇)

<4D F736F F D20BCC6CBE3BBFAD1A7BBE1C2DBCEC4B9DCC0EDCFB5CAB9D3C3CBB5C3F7CAE9CDB >

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统 新 用 户 新 用 户 登 入 帐 户 程 序 启 动 网 上 预 约 面 谈 访 问 帐 户 核 对 帐 户 的 地 址 资 料

Microsoft PowerPoint - plan03.ppt

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录 企 业 基 本 信 息 查 看 企 业 人 员 信 息 查 看 企 业 基 本 信 息 操 作 企 业 简 介 企 业 章

安达发SYS系统管理用户操作手册.doc

全国艺术科学规划项目

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

徐天宏:《基因天堂》.doc

第二讲 数列


中国石化油品销售企业CRM调研报告

Microsoft Word - 06.doc

Microsoft Word - 第7章 图表反转形态.doc

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

党建评估

文档编号:

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式

联想电子订单操作指南

Microsoft Word - 第3章.doc

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>

电信系教学大纲的基本规范

白皮书

如 何 开 始 使 用 Excel 2010 如 果 您 长 期 以 来 一 直 在 使 用 Microsoft Excel 2003, 则 对 于 在 Excel 2010 中 的 哪 些 地 方 可 找 到 Excel 2003 命 令 和 工 具 栏 按 钮, 肯 定 心 存 疑 问 我 们

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

环信移动客服v4.1

2) 注 册 内 容 填 写, 阅 读 注 册 协 议, 完 成 注 册 字 段 标 示 有 符 号 的, 为 下 拉 选 择,* 为 必 填 项 2. 厦 钨 B2B 加 入 线 上 供 应 商 申 请 1) 系 统 显 示 已 注 册 用 户 信 息, 可 打 开 左 列 供 应 商 管 理 条

Microsoft Robotics Studio 使 用 手 册 1 目 录 第 一 章 MSRS 安 装 与 使 用 1.1 MSRS 下 载 MSRS 系 统 运 行 要 求 MSRS 安 装 配 置 MSRS 与 NXT 的 蓝 牙 连 接 4 第 二 章

注 意 : 如 上 图 所 示, 网 上 缴 费 (12 月 3 日 至 10 日 ) 与 春 季 高 考 现 场 确 认 工 作 (12 月 3 日 至 6 日 ) 同 时 进 行, 没 有 经 过 现 场 确 认 和 确 认 信 息 没 有 上 传 到 服 务 器 的 考 生 不 能 网 上 缴

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

学位论文文档编辑与提交

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试

moza_ctc_64021.pdf

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐

Excel basics

珠江钢琴股东大会

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

Microsoft Word - 文件汇编.doc

网络保险箱客户端使用手册

用节点法和网孔法进行电路分析

目 录 1. 全 球 云 邮 综 述 登 录 / 退 出 域 管 理 系 统 登 录 系 统 查 看 域 信 息 修 改 域 管 理 员 密 码 退 出 系 统 账 号 管 理... 8

1 系统概述

<4D F736F F D20416E64726F CAD6BBFABCE0BFD8BFCDBBA7B6CBCAB9D3C3CAD6B2E15F56322E302E646F63>

变 量 的 主 要 作 用 是 存 取 数 据 提 供 存 放 信 息 的 容 器 对 于 变 量 必 须 明 确 变 量 的 命 名 变 量 的 类 型 变 量 的 声 明 及 其 变 量 的 作 用 域 JavaScript 是 一 种 弱 类 型 语 言, 也 就 是 说, 在 声 明 变 量

目 录 版 本 更 新 说 明 导 读 读 者 对 象 手 册 内 容 简 介 软 件 简 介 基 本 术 语 技 术 支 持 基 本 流 程 操 作 步 骤... 8

通用短信平台HTTP接口使用说明V1.0.4

Microsoft Word - GT21L16S2W简要说明V3.7.doc

年 第 期 % %! & % % % % % % &

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

GB

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

Transcription:

6.3. 调 用 动 态 链 接 库 (DLL) 相 对 于 CIN 来 讲,NI 更 推 荐 用 户 使 用 DLL 来 共 享 基 于 文 本 编 程 语 言 开 发 的 代 码 除 了 共 享 或 重 复 利 用 代 码, 开 发 人 员 还 能 利 用 DLL 封 装 软 件 的 功 能 模 块, 以 便 这 些 模 块 能 被 不 同 开 发 工 具 利 用 在 LabVIEW 中 使 用 DLL 一 般 有 以 下 几 种 途 径 : 1. 使 用 自 己 开 发 DLL 中 的 函 数 2. 调 用 操 作 系 统 或 硬 件 驱 动 供 应 商 提 供 的 API 对 于 前 一 种 方 法 来 说, 又 可 以 通 过 以 下 几 步 来 实 现 : a) 在 LabVIEW 中 定 义 DLL 原 型 ; b) 生 成.C 或.C++ 文 件, 完 成 实 现 函 数 功 能 的 代 码 并 为 函 数 添 加 DLL 导 出 声 明 ; c) 通 过 外 部 IDE( 如 VC++) 创 建 DLL 项 目 并 编 译 生 成.dll 文 件 d) 在 LabVIEW 项 目 中 使 用 DLL 中 的 函 数 以 下 章 节 将 通 过 实 例 对 这 两 种 情 况 详 细 进 行 叙 述 6.3.1. 配 置 Call Library Function Node(CFN) 无 论 在 LabVIEW 中 使 用 自 己 开 发 的 DLL, 硬 件 驱 动 供 应 商 或 者 操 作 系 统 提 供 的 API, 都 可 以 通 过 配 置 Call Library Function Node (CFN, 图 6-12) 来 完 成 图 6-12 LabVIEW 的 Call Library Function Node 在 CFN 图 标 的 右 键 菜 单 上 选 择 Configure 打 开 Call Library Function 配 置 对 话 框 ( 图 6-13) 通 过 该 对 话 框, 可 以 指 定 动 态 库 存 放 路 径 调 用 的 函 数 名 以 及 传 递 给 函 数 的 参 数 类 型 和 函 数 返 回 值 的 类 型 在 配 置 完 后,CLF 节 点 会 根 据 用 户 的 配 置 自 动 更 新 其 显 示 通 过 Browse 按 钮 或 者 直 接 在 Library Name or Path 输 入 框 中 指 定 调 用 函 数 多 在.dll 文 件 的 路 径 通 过 Browse 按 钮 下 的 控 件 用 户 可 以 指 定 多 个 线 程 同 时 调 用 DLL 默 认 情 况 下,LabVIEW 以 Run 11

in UI Thread 方 式 调 用 DLL, 调 用 的 函 数 将 直 接 在 用 户 线 程 中 运 行 另 外 一 种 方 式 为 递 归 方 式 Reentrant, 在 这 种 情 况 下 可 以 允 许 多 个 线 程 同 时 调 用 DLL 中 的 函 数 但 要 确 保 正 常 调 用, 必 须 使 DLL 中 的 代 码 线 程 安 全 以 下 是 一 些 最 基 本 的 线 程 安 全 特 性 : a. 代 码 不 含 有 未 受 保 护 的 全 局 数 据 ( 如 全 局 变 量, 文 件 ); b. 代 码 不 访 问 硬 件 ( 即 不 含 有 寄 存 器 一 级 的 代 码 ); c. 代 码 不 调 用 非 线 程 安 全 的 函 数 DLL 或 者 驱 动 ; d. 代 码 使 用 信 号 量 或 者 互 斥 量 来 保 护 全 局 量 ; e. 代 码 被 一 个 非 递 归 的 VI 调 用 时 为 线 程 安 全 图 6-13 CLF 配 置 对 话 框 在 Function Name 输 入 框 中 指 定 要 调 用 函 数 的 函 数 名 通 过 Call Conventions 下 拉 列 表 框 指 定 调 用 DLL 中 函 数 的 方 式 可 以 指 定 调 用 方 式 为 C ( 默 认 方 式 ) 或 Windows 标 准 调 用 方 式 stdcall 一 般 来 说 用 C 方 式 调 用 开 发 人 员 自 己 写 的 DLL 函 数, 而 stdcall 一 般 做 为 标 准 调 用 方 式 来 调 用 windows 的 API 通 过 Parameter 域 可 以 指 定 所 调 用 函 数 的 返 回 值 类 型 默 认 情 况 下 CFN 节 点 没 有 输 入 参 数 而 且 只 有 一 个 void 类 型 的 返 回 参 数 该 参 数 由 CFN 节 点 第 一 对 连 接 点 的 右 端 返 回, 代 表 CFN 执 行 结 果 如 果 返 回 参 数 的 类 型 是 void 类 型, 则 CFN 连 接 点 为 未 启 用 状 态 ( 保 持 为 灰 色 ) CFN 的 每 一 对 连 接 点 代 表 一 个 输 入 或 输 出 参 数, 若 要 传 递 参 数 给 CFN 则 将 参 数 连 接 至 相 应 连 接 点 的 左 端, 若 要 读 取 返 回 值, 则 将 相 应 连 接 点 的 右 端 连 接 到 Indicator CFN 返 回 参 数 的 类 型 可 以 是 Void,Numeric 或 String 只 能 为 返 回 参 数 指 定 Void 类 型, 输 入 参 数 不 能 指 定 为 Void 类 型 调 用 的 函 数 没 有 返 回 值 时, 指 定 CFN 的 返 回 参 数 类 型 为 void 类 型 即 使 参 数 有 确 定 类 型 的 返 回 值, 也 可 以 指 定 CFN 的 返 回 类 型 为 Void, 但 是 此 时, 函 数 的 返 回 值 将 被 忽 略 有 些 时 候, 调 用 的 函 数 返 回 值 不 是 以 上 三 种 类 型, 可 以 使 用 与 以 上 三 种 类 中 有 相 同 大 小 的 一 个 来 代 替 例 如 如 果 调 用 的 函 数 返 回 一 个 Char 类 型 数 据, 则 可 以 用 一 个 8-bit unsigned integer 的 Numeric 类 型 来 代 替 此 外, 由 于 LabVIEW 中 没 有 指 针, 因 此 调 用 DLL 中 的 返 回 指 针 的 函 数 似 乎 不 可 能 但 是 可 以 设 定 返 回 值 类 型 为 一 个 与 指 针 有 相 同 大 小 的 Integer 类 型,LabVIEW 将 把 地 址 以 整 型 值 来 看 待, 并 且 用 户 可 以 在 以 后 的 调 用 中 直 接 使 用 它 12

通 过 Parameter 域 和 其 右 边 的 Add a Parameter Before, Add a Parameter After 和 Delete this Parameter 三 个 按 钮 可 以 增 加 删 除 以 及 修 改 CFN 的 输 入 参 数 和 类 型 当 用 户 选 择 某 参 数 的 类 型 后, 其 详 细 的 数 据 类 型 列 表 和 参 数 传 递 方 式 列 表 将 显 示 出 来, 以 方 便 进 行 详 细 设 定 表 6-1 列 出 了 可 以 设 定 的 输 入 参 数 类 型 及 其 详 细 数 据 类 型 信 息 参 数 类 型 说 明 Numeric 型 参 数 有 以 下 几 种 数 据 类 型 : 8 16 32 和 64 位 符 号 和 无 符 号 整 型 (Signed or Unsigned Integer) Numeric 4 字 节 单 精 度 类 型 (4-byte single) 8 字 节 双 精 度 类 型 (8-byte Double) 利 用 Pass 下 拉 列 表 指 定 传 递 参 数 指 针 或 是 传 递 参 数 的 指 针 Array 型 参 数 的 数 据 类 型 同 Numeric 型 参 数 的 数 据 类 型 ; 通 过 Dimensions 指 定 数 组 的 维 数 ; Array Format 有 以 下 几 种 选 项 : Array Array Data Pointer 传 递 一 维 指 针 到 数 组 值 Array handle 传 递 一 个 指 向 数 组 每 一 维 的 4 个 字 节 指 针 的 指 针, 其 后 为 数 组 的 值 array handle Pointer 为 数 组 的 句 柄 传 递 一 个 指 针 用 String Format 下 拉 列 表 框 选 择 字 符 串 类 型 C String Pointer 以 null 字 符 结 束 的 字 符 串 String Pascal String Pointer 附 加 长 度 字 节 的 字 符 串 string handle 一 个 指 向 4 个 字 节 长 度 信 息 指 针, 其 后 为 字 符 串 的 值 string handle Pointer Waveform 类 型 的 参 数 默 认 类 型 为 8-byte double, 因 此 一 般 没 有 必 要 为 其 指 定 数 据 类 型 但 是 必 须 为 其 指 定 维 数, 如 果 参 数 为 单 独 的 Waveform, 则 指 定 Dimensions 为 Waveform 0, 如 果 参 数 为 waveform 数 组, 则 指 定 Dimensions 为 1 注 意 :LabVIEW 不 支 持 超 过 1D 的 waveform 数 组! 如 果 参 数 为 digital waveform 数 组, 则 指 定 Dimensions 为 1, 否 则 为 0 Digital Waveform 注 意 :LabVIEW 不 支 持 超 过 1D 的 waveform 数 组! 如 果 参 数 为 digital data 数 组, 则 指 定 Dimensions 为 1, 否 则 为 0 Digital Data 注 意 :LabVIEW 不 支 持 超 过 1D 的 digital Data 数 组! Data Type 下 拉 列 表 框 有 以 下 选 择 : ActiveX Variant Pointer 传 递 一 个 指 向 ActiveX 数 据 的 指 针 ActiveX IDispatch* Pointer 传 递 一 个 指 向 ActiveX 自 动 化 服 务 器 IDispatch 接 口 的 指 针 IUnknown Pointer 传 递 一 个 指 向 ActiveX 自 动 化 服 务 器 IUnknown 接 口 的 指 针 Adapt to Type 用 来 传 递 LabVIEW 独 有 的 数 据 类 型 给 DLL 表 6-2 CFN 输 入 参 数 的 类 型 有 时 可 能 在 CFN 配 置 对 话 框 中 并 不 能 找 到 要 传 递 给 它 的 参 数 类 型, 在 这 种 情 况 下 可 以 通 过 下 面 方 法 来 解 决 如 果 参 数 不 含 指 针, 则 可 以 通 过 Flatten to String 函 数 ( ) 将 参 数 转 换 为 字 符 串, 并 将 此 字 符 串 指 针 传 递 给 函 数 还 有 其 它 一 些 技 巧 请 参 见 NI 手 册 设 定 后 的 最 终 结 果 显 示 在 Function Prototype 文 本 框 中, 在 确 认 前, 可 以 在 此 检 查 设 定 是 否 正 确 如 果 不 正 确 可 以 在 此 修 改 设 定 13

6.3.2. 调 用 自 己 开 发 DLL 中 的 函 数 开 发 人 员 可 以 在 LabVIEW 中 指 定 DLL 函 数 的 原 型, 然 后 在 外 部 IDE 中 完 成 代 码 并 编 译 生 成.dll 文 件 以 供 项 目 使 用 下 面 就 以 一 个 简 单 的 求 数 组 求 和 的 项 目 为 例 来 说 明 这 种 开 发 过 程 1. 在 LabVIEW 中 创 建 DLL 函 数 原 型 a) 在 LabVIEW 的 diagram 面 板 上 添 加 一 个 CFN 并 通 过 其 右 键 菜 单 打 开 CFN 的 配 置 对 话 框 ; b) 使 Library Name or Path 输 入 框 为 空 ; c) 指 定 函 数 名 Function Name 和 调 用 方 式 Calling Conventions 分 别 为 add_num 和 C; d) 重 命 名 返 回 参 数 的 名 称 为 error, 并 指 定 其 类 型 为 Numeric 的 Signed 32-bit Integer; e) 用 Add a Parameter After 按 钮 添 加 第 一 个 参 数 p, 指 定 其 类 型 为 Array 的 4-byte Single 并 设 定 Array Format 为 Array Data Pointer; f) 用 Add a Parameter After 按 钮 添 加 第 二 个 参 数 size, 指 定 其 类 型 为 为 Numeric 的 Signed 32-bit Integer 并 设 置 参 数 传 递 方 式 为 Value; g) 用 Add a Parameter After 按 钮 添 加 第 三 个 参 数 sum, 指 定 其 类 型 为 为 Numeric 的 4-byte Single 并 设 置 参 数 传 递 方 式 为 Pointer to Value; h) 至 此, 函 数 的 原 型 应 如 下 所 示 ( 图 6-14): long add_num(float *p, long size, float *sum); 图 6-14 CFN 的 配 置 结 果 i) 确 定 后 会 发 现 CFN 根 据 配 置 自 动 进 行 了 更 新 更 新 后 的 情 况 如 右 图 示 2. 生 成.C 或.C++ 文 件, 完 成 实 现 函 数 功 能 的 代 码 并 为 函 数 添 加 DLL 导 出 声 明 ; 在 CFN 节 点 上 通 过 右 键 菜 单 选 择 Create.C File 生 成 mydll.c 文 件, 其 内 容 如 下 : /* Call Library source file */ 14

#include "extcode.h" long add_num(float p[], long size, float *sum); long add_num(float p[], long size, float *sum) { /* Insert code here */ } 将 以 下 代 码 插 入 到 /* Insert code here */ 句 之 后 实 现 函 数 的 功 能 int i; float tmpsum = 0; if(p!= NULL) { for(i=0; i < size; i++) tmpsum = tmpsum + p[i]; } else return (1); * sum = tmpsum; return (0); 在 完 成 实 现 函 数 功 能 的 代 码 后, 还 必 须 为 函 数 添 加 导 出 声 明 以 便 能 在 LabVIEW 中 使 用 这 些 函 数 C/C++ 声 名 导 出 函 数 的 关 键 字 是 _declspec (dllexport), 使 用 该 关 键 字 可 以 代 替 模 块 定 义 文 件 对 于 此 处 的 例 子 来 说, 只 要 在 函 数 声 明 和 定 义 部 分 添 加 关 键 字 即 可 最 终 代 码 如 下 : /* Call Library source file */ #include "extcode.h" _declspec (dllexport) long add_num(float p[], long size, float *sum); _declspec (dllexport) long add_num(float p[], long size, float *sum) { /* Insert code here */ int i; float tmpsum = 0; if(p!= NULL) { for(i=0; i < size; i++) tmpsum = tmpsum + p[i]; } else return (1); * sum = tmpsum; return (0); } 3. 在 外 部 IDE( 以 VC++ 为 例 ) 中 创 建 DLL 项 目 并 编 译 生 成.dll 文 件 用 VC++ 6.0 进 行 编 译 生 成.dll 文 件 的 步 骤 如 下 : a) 在 VC++ 中 创 建 一 个 DLL 项 目, 如 果 在 DLL 中 没 有 使 用 MFC 就 选 择 创 建 Win32 15

Dynamic-Link Library, 否 则 选 择 MFC AppWizard(dll), 对 此 例 子 来 说 选 择 前 者 选 定 后 进 入 下 一 步 选 择 创 建 一 个 空 的 DLL 项 目 b) 通 过 Project»Add to Project»Files 添 加 mydll.c 到 创 建 的 mydll 项 目 之 中 c) 通 过 Project»Settings 打 开 项 目 配 置 对 话 框, 选 择 C/C++ 选 项 卡 d) 配 置 项 目 的 All Configurations 选 择 Settings For 下 拉 列 表 框 中 的 All Configurations, 选 择 Category 下 拉 列 表 框 中 的 Code Generation, 最 后 设 置 Struct member alignment 为 1 Byte 配 置 结 果 如 图 6-15 图 6-15 配 置 项 目 的 All Configurations e) 配 置 项 目 的 Release 版 本 选 择 Settings For 下 拉 列 表 框 中 的 Win32 Release, 选 择 Category 下 拉 列 表 框 中 的 Code Generation, 最 后 从 Use run-time library 下 拉 列 表 框 中 选 择 Multithreaded DLL 配 置 结 果 如 图 6-16 f) 配 置 项 目 的 Debug 版 本 选 择 Settings For 下 拉 列 表 框 中 的 Win32 Debug, 选 择 Category 下 拉 列 表 框 中 的 Code Generation, 最 后 从 Use run-time library 下 拉 列 表 框 中 选 择 Debug Multithreaded DLL 配 置 结 果 如 图 6-17 16

图 6-16 配 置 项 目 的 Release 版 本 图 6-17 配 置 项 目 的 Debug 版 本 17

4. 在 LabVIEW 项 目 中 调 用.dll 中 的 函 数 创 建 如 图 6-18 所 示 的 VI, 其 中 Array 为 Representation»Single Precision 类 型 的 数 组,Sum 为 Representation»Single Precision 类 型 的 Indicator, error 为 Representation»Long 类 型 的 Indicator 运 行 后 可 以 看 到 对 数 组 求 和 的 结 果 图 6-18 调 用 DLL 中 函 数 的 VI 6.3.3. 调 用 Win32 API 在 LabVIEW 可 以 通 过 CFN 调 用 Win32 API 或 者 是 硬 件 驱 动 供 应 商 提 供 的 驱 动 程 序 通 过 调 用 这 些 函 数 用 户 能 利 用 与 操 作 系 统 进 行 交 互 或 者 利 用 第 三 方 供 应 商 提 供 的 函 数 来 扩 展 自 己 项 目 的 功 能 以 下 章 节 以 调 用 Win32 API 中 MessageBox 函 数 来 实 现 一 个 同 时 带 Abort, Retry, Ignore 按 钮 和 一 个 警 告 图 标 的 消 息 对 话 框 为 例, 叙 述 在 LabVIEW 中 利 用 CFN 调 用 Win32 API 的 方 法 要 在 LabVIEW 项 目 中 调 用 Win32 API, 首 先 要 从 Microsoft 提 供 的 相 关 开 发 文 档 中 找 到 所 要 调 用 API 函 数 的 原 型 和 其 所 在.dll 文 件 的 名 字 要 查 找 这 些 信 息, 可 以 参 考 Microsoft Software Development Kit (SDK) 或 MSDN 的 相 关 文 档 从 文 档 中 找 到 MessageBox 函 数 的 原 型 和 相 关 的 一 些 信 息 如 下 int MessageBox(HWND hwnd, // 父 窗 口 的 句 柄 LPCTSTR lptext, // 消 息 窗 中 显 示 的 文 本 LPCTSTR lpcaption, // 消 息 窗 的 标 题 UINT utype); // 消 息 窗 的 类 型 ----Requirements:---- Windows: Requires Windows 98 or later. Windows CE: Requires version 1.0 or later. Header: Declared in winuser.h. Import Library: Use user32.lib. Unicode: Implemented as Unicode and ANSI versions on Windows. 找 到 这 些 信 息 后, 就 可 以 进 行 调 用 API 函 数 的 的 第 二 步 : 将 参 数 类 型 映 射 为 LabVIEW 支 持 的 数 据 类 型 Win32 API 函 数 用 了 多 种 非 标 准 C 的 数 据 类 型, 这 给 在 LabVIEW 中 调 用 API 带 来 了 一 点 麻 烦 但 是 幸 运 的 是, API 函 数 所 用 的 这 些 非 标 准 数 据 类 型 只 仅 仅 是 标 准 C 数 据 类 型 的 别 名 例 如 上 面 例 子 中 MessageBox 函 数 使 用 的 参 数 类 型 与 标 准 C 的 参 数 类 型 有 以 下 映 射 关 系 : HWND = int * * LPCTSTR = const char * 18

UINT = unsigned int 可 直 接 将 LPCTSTR 和 UINT 映 射 为 LabVIEW 支 持 的 类 型 LPCTSTR 与 C 语 言 字 符 串 等 价,UINT 等 价 于 LabVIEW 的 U32 数 据 类 型 但 是 映 射 HWND 稍 微 有 点 麻 烦 HWND 是 指 向 整 型 数 指 针 的 指 针 观 察 MessageBox 函 数 中 HWND 的 作 用, 可 以 看 出 此 参 数 只 仅 仅 用 来 标 识 消 息 窗 父 窗 口 的 句 柄, 因 此, 我 们 没 有 必 要 知 道 句 柄 本 身 的 值, 而 只 要 关 注 HWND 参 数 本 身, 由 于 HWND 是 指 向 整 型 数 指 针 的 指 针, 因 此 可 以 将 它 看 作 32 位 无 符 号 整 型 量 (U32) 在 Windows SDK 中 有 很 多 以 H 开 头 的 量 ( 句 柄 ), 一 般 说 来, 在 开 发 过 程 中, 都 可 以 将 它 看 作 32 位 无 符 号 整 型 量 (U32) 而 不 必 关 心 它 本 身 的 值 如 果 不 能 确 定 API 函 数 参 数 数 据 类 型 所 对 应 的 标 准 C 语 言 数 据 类 型, 可 以 在 头 文 件 windef.h 中 查 找 相 应 的 #define 或 typedef 定 义 有 了 这 些 等 价 转 换, 还 要 关 注 API 函 数 中 常 量 与 LabVIEW 中 数 据 类 型 或 表 示 方 法 的 映 射 在 Visual Studio 中, 编 程 人 员 一 般 不 直 接 使 用 常 量 的 值, 而 是 使 用 与 预 定 义 的 常 量 名, 但 是 在 LabVIEW 中 却 必 须 使 用 实 际 的 值 例 如 对 于 MessageBox 函 数 来 说, 代 表 消 息 窗 类 型 的 参 数 utype 可 以 使 用 下 表 中 几 个 常 量 常 量 说 明 MB_ABORTRETRYIGNORE 带 有 Abort, Retry, Ignore 按 钮 的 消 息 窗 MB_CANCELTRYCONTINUE Win2000 上 可 替 代 MB_ABORTRETRYIGNORE 量, 具 有 Cancel, Try Again, Continue 按 钮 的 消 息 窗 MB_HELP Win2K/XP 上 为 消 息 窗 添 加 Help 按 钮 并 在 用 户 按 下 此 按 钮 时 发 送 WM_HELP 消 息 给 父 窗 口 的 的 消 息 窗 MB_OK 默 认 值 只 有 一 个 OK 按 钮 的 消 息 窗 MB_ICONWARNING 带 有 警 告 图 标 的 消 息 窗 通 过 在 SDK 文 档 中 查 找 到 的 信 息 (Header: Declared in winuser.h.) 知 道 这 些 常 量 在 头 文 件 winuser.h 中 有 定 义 通 过 该 头 文 件 可 以 找 到 相 关 定 义 如 下 #ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif... #define MB_OK 0x00000000L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONEXCLAMATION 0x00000030L 在 SDK 文 档 中, 常 量 通 常 取 位 域 中 的 某 一 位 作 为 其 值 位 域 是 通 常 是 指 一 个 每 一 位 控 制 某 种 属 性 的 单 个 整 型 量 通 过 或 运 算 ( ) 可 以 将 多 个 常 量 组 合 起 来 达 到 多 种 需 要 的 效 果 从 逻 辑 运 算 角 度 来 讲, 进 行 或 运 算 等 价 于 选 择 了 位 域 中 的 多 个 控 制 位 例 如 可 以 通 将 MB_ABORTRETRYIGNORE 和 MB_ICONEXCLAMATION 进 行 或 运 算 后 的 值 传 给 utype 可 以 创 建 一 个 同 时 带 Abort, Retry, Ignore 和 一 个 警 告 图 标 的 消 息 窗 MB_ABORTRETRYIGNORE 的 值 为 0x02, MB_ICONEXCLAMATION 的 值 为 0x30, 经 过 或 运 算 后 的 值 为 0x32 在 Visual Studio 开 发 中 可 以 直 接 将 MB_ABORTRETRYIGNORE MB_ICONEXCLAMATION 常 量 或 运 算 表 达 式 作 为 参 数 utype 传 递 给 MessageBox 函 数 来 实 现 一 个 同 时 带 Abort, Retry, Ignore 按 钮 和 一 个 警 告 图 标 的 消 息 对 话 框, 但 是 LabVIEW 却 不 支 持 这 种 形 式 的 参 数 传 递 因 此 必 须 将 常 量 表 达 式 转 换 为 LabVIEW 支 持 的 形 式 这 可 以 通 过 表 达 式 来 实 现 注 意 其 中 数 字 均 为 十 六 进 制 数 最 后 还 要 根 据 开 发 项 目 是 ANSI 项 目 还 是 Unicode 项 目, 并 参 照 SDK 文 档 选 择 合 适 的 函 数 一 般 来 说 大 多 数 LabVIEW 项 目 均 为 ANSI 项 目, 因 为 大 多 数 LabVIEW 的 字 符 串 均 为 ANSI 标 准 字 符 串 对 于 此 处 的 例 子 19

来 说, 通 过 参 看 从 SDK 文 档 中 获 取 的 信 息 可 知 MessageBox 函 数 有 ANSI 和 Unicode 两 种 实 现 (Unicode: Implemented as Unicode and ANSI versions on Windows.) 查 看 头 文 件 winuser.h 中 内 容 ( 参 见 上 页 表 ) 可 知 对 于 ANSI 类 型 的 项 目 应 选 择 函 数 名 MessageBoxA 实 际 上 在 库 文 件 user32.dll( 在 windows 中 相 对 于 静 态 库 文 件 一 般 都 存 在 一 个 同 名 的 动 态 库 文 件 ) 中, 只 存 在 函 数 MessageBoxA 和 MessageBoxW 并 没 有 MessageBox 函 数 的 实 体 综 上 所 述, 要 调 用 API 实 现 一 个 同 时 带 Abort, Retry, Ignore 按 钮 和 一 个 警 告 图 标 的 消 息 对 话 框 可 对 CFN 节 点 完 成 如 图 6-19 所 示 的 配 置 图 6-19 CFN 节 点 的 配 置 完 成 后 VI 的 后 面 板 和 运 行 结 果 可 能 如 图 6-20 所 示 图 6-20 VI 的 后 面 板 和 运 行 结 果 20