 使 用 代 码 生 成 器

代 码 生 成 窗 口 由 ISaGRAF 工 作 台 其 它 窗 口 的 “校 验” 和 “制 作” 命 令 自 动 打 开 。 当 所 需 要 的 代 码 生 成 操 作 结 束 时 ， 代 码 生 成 窗 口 不 会 自 动 关 闭 ， 这 样 用 户 仍 能 从 窗 口 菜 单 使 用 所 有 的 代 码 生 成 命 令 和 选 项 。

主 命 令

编 译 器 选 项

生 成 C 源 代 码

浏 览 信 息

定 义 资 源


主 命 令

“文 件” 菜 单 包 括 检 查 程 序 语 法 和 代 码 生 成 的 命 令。

生 成 应 用 程 序 代 码

检 查 程 序 语 法

仿 真 一 个 修 改

双 击 错 误 信 息， 可 以 打 开 应 用 程 序， 并 使 光 标 处 于 产 生 错 误 信 息 的 位 置。


生 成 应 用 程 序 代 码

“生 成” 命 令 建 立 该 项 目 的 所 有 代 码。 在 产 生 任 何 代 码 之 前， 该 命 令 检 查 声 明 语 句 和 程 序 的 语 法 。 在 编 译 单 个 程 序 时 无 法 检 测 到 的 任 何 错 误 在 代 码 生 成 时 被 检 测 到 。 这 种 情 况 适 用 于 变 换 表 ， 输 入 / 输 出 变 量 连 接 以 及 与 库 之 间 的 链 接 。 当 检 测 到 错 误 时 ， 代 码 生 成 程 序 暂 停 对 一 个 程 序 的 编 译 。 在 继 续 执 行 代 码 生 成 程 序 之 前 必 须 修 正 该 程 序 。 自 上 一 次 “校 验” 操 作 以 来 被 检 查 的 程 序 ( 未 检 测 到 错 误 ) 和 尚 未 修 改 的 程 序 不 能 被 重 新 编 译。 变 量 声 明 语 句 的 校 验 和 应 用 程 序 的 相 关 检 查 总 是 被 处 理。 在 检 查 程 序 时， 敲 击 ESCAPE 键 可 以 停 止 “生 成” 操 作。

注 意:	 如 果 程 序 的 一 个 局 部 变 量 声 明 已 被 修 改 ， 则 该 程 序 被 校 验 。 如 果 一 个 全 局 变 量 已 被 修 改 ， 则 校 验 所 有 的 程 序。


检 查 程 序 语 法

“校 验 程 序” 命 令 允 许 用 户 只 能 校 验 一 个 程 序。 即 使 从 上 一 次 校 验 以 来 所 选 程 序 未 被 修 改， 该 程 序 仍 被 编 译。

“校 验 字 典” 命 令 允 许 用 户 校 验 项 目 的 所 有 变 量 的 声 明 。

“校 验 所 有 程 序” 命 令 检 查 项 目 的 所 有 程 序 的 语 法， 即 使 它 们 中 的 一 些 程 序 未 被 修 改 。 当 某 个 程 序 被 检 测 出 一 个 错 误 时， 该 命 令 不 中 止 （执 行）。 该 功 能 可 用 于 给 项 目 程 序 中 的 所 有 错 误 生 成 一 个 完 整 的 表 。 敲 击 ESC 键 可 停 止 该 命 令 的 执 行。


仿 真 一 个 修 改

“尝 试” 命 令 仿 真 所 有 项 目 程 序 的 一 个 修 改， 这 样 ， 在 下 一 次 “生 成” 操 作 时 所 有 程 序 均 被 校 验 。 “打 开” 命 令 用 于 打 开 最 后 被 校 验 的 程 序 。 该 命 令 对 于 直 接 进 入 已 被 检 测 到 语 法 错 误 的 一 个 程 序 是 非 常 有 用 的 。


编 译 程 序 的 选 项

“编 译 器 选 项” 命 令 用 于 建 立 由 ISaGRAF 代 码 生 成 器 使 用 的 主 要 参 数 ， 以 便 产 生 和 优 化 目 标 代 码。 该 命 令 的 目 的 是 根 据 相 应 的 ISaGRAF 目 标 选 择 必 须 生 成 的 代 码 类 型 ， 并 根 据 所 期 望 的 编 译 时 间 和 应 用 程 序 运 行 时 间 所 提 出 的 要 求 建 立 优 化 参 数 。

选 择 目 标

SFC 的 处 理

优 化 选 项

“上 载” 按 钮 打 开 第 二 个 对 话 框 ， 该 对 话 框 带 有 能 够 把 压 缩 后 的 源 代 码 嵌 入 下 载 代 码 的 其 它 选 项 ， 以 便 实 现 “上 载” 功 能 。 有 关 这 方 面 的 进 一 步 解 释 请 查 阅 “上 载” 资 料。


选 择 目 标

上 面 的 表 是 显 示 能 生 成 的 、 可 供 选 用 的 目 标 代 码 表 ， 符 号 “> >” 用 于 指 出 所 选 择 的 目 标 。 ISaGRAF 代 码 生 成 器 在 同 一 个 编 译 操 作 中 可 以 产 生 3 种 不 同 的 代 码。 根 据 你 的 目 标 硬 件 使 用 “选 择” 和 “不 选” 按 钮 设 置 所 需 要 的 目 标 代 码 表。 以 下 是 标 准 的 ISaGRAF 目 标：

SIMULATE:	此 代 码 供 工 作 台 上 的 ISaGRAF 仿 真 器 使 用。 如 果 该 目 标 没 有 被 选 择 用 于 产 生 应 用 程 序 代 码 ， 则 仿 真 器 不 能 运 行。

ISA86M:	它 是 一 个 供 安 装 在 Intel 处 理 器 上 ISaGRAF 内 核 使 用 的 TIC 代 码 ( 独 立 于 目 标 的 代 码 )。 处 理 器 类 型 仅 与 已 生 成 的 代 码 的 位 顺 序 有 关。

ISA68M:	它 是 一 个 供 安 装 在 Motorola 处 理 器 上 ISaGRAF 内 核 使 用 的 TIC 代 码 (独 立 于 目 标 的 代 码)。 处 理 器 的 类 型 仅 与 已 生 成 的 代 码 的 位（byte）顺 序 有 关。

SCC:	选 择 该 目 标 使 ISaGRAF 编 译 程 序 产 生 结 构 化 的 “C” 语 言 源 代 码， 该 代 码 将 被 编 译 并 与 ISaGRAF 目 标 内 核 库 链 接， 以 便 产 生 一 个 被 嵌 入 的 可 执 行 代 码 。

CC86M:	选 择 该 目 标 使 ISaGRAF 编 译 程 序 产 生 非 结 构 化 的 “C” 语 言 源 代 码 ， 该 代 码 将 被 编 译 并 与 ISaGRAF 目 标 内 核 库 链 接， 以 便 产 生 一 个 被 嵌 入 的 可 执 行 代 码 。 当 不 支 持 结 构 化 “C” 代 码 生 成 和 集 成 时 ， 该 选 项 被 用 于 与 V3.23 以 前 的 ISaGRAF 版 本 相 兼 容。

如 果 想 知 道 安 装 在 您 的 PLC 上 的 ISaGRAF 目 标 内 核 的 型 号 ， 请 查 阅 硬 件 手 册 。 其 它 目 标 型 号 ( 机 器 代 码 ， C 源 代 码， 等) 在 以 后 出 版 的 ISaGRAF 工 作 台 上 将 被 支 持。


SFC 处 理

检 查 “使 用 被 嵌 入 的 SFC 生 成 器” 框， 以 便 能 够 使 用 ISaGRAF SFC 生 成 器。 由 于 该 模 式 能 产 生 较 高 的 运 行 时 间 性 能， 因 此 被 优 先 选 用。 然 而 ， 在 ISaGRAF 目 标 实 现 某 些 特 殊 功 能 时 ， 该 目 标 生 成 器 有 可 能 并 不 存 在。 这 里 所 说 的 特 殊 功 能 ， 通 常 是 指 基 于 ISaGRAF 代 码 后 处 理 的 用 户 特 定 目 标 。 在 这 种 情 况 下 ， 你 也 许 不 得 不 取 消 这 一 选 项 ， 并 让 ISaGRAF 编 译 程 序 把 SFC 流 程 图 转 换 成 低 级 指 令 。 有 关 使 用 该 选 项 的 更 多 信 息 请 查 阅 你 的 硬 件 资 料 。


优 化 选 项

以 下 是 ISaGRAF 代 码 生 成 器 用 于 优 化 目 标 代 码 所 使 用 的 参 数 ， 这 些 参 数 可 以 从 “编 译 器 选 项” 对 话 框 中 设 置。 “缺 省” 按 钮 被 用 于 删 除 所 有 的 优 化 选 项 ， 以 便 减 少 编 译 时 间 。

当 “ 运 行 优 化 器” 选 项 被 设 置 时 ， ISaGRAF 代 码 优 化 程 序 被 运 行 两 次 。 通 常 在 第 二 个 周 期 所 作 的 优 化 操 作 的 有 效 性 比 第 一 个 周 期 所 作 的 优 化 操 作 要 小 一 些。

当 “评 估 常 量 表 达 式” 选 项 被 设 置 时 ， 常 量 表 达 式 由 编 译 程 序 来 判 定 。 例 如 ， 数 字 表 达 式 “2 + 3” 在 目 标 代 码 中 用 “5” 代 替 。 当 该 选 项 未 被 设 置 时 ， 常 量 表 达 式 在 运 行 时 间 内 计 算 。

当 “禁 止 未 用 标 号” 选 项 被 设 置 时， 优 化 程 序 简 化 程 序 的 跳 转 和 标 号 系 统， 以 便 取 消 未 使 用 的 目 标 标 号 或 空 跳 转。

当 “优 化 变 量 复 制” 选 项 被 设 置 时， 暂 时 使 用 的 变 量 ( 用 于 保 存 中 间 结 果 ) 被 优 化 。 该 选 项 通 常 与 “优 化 表 达 式” 选 项 一 起 使 用 。 当 该 选 项 被 设 置 时 ， 优 化 程 序 再 次 使 用 表 达 式 和 子 表 达 式 ， 这 些 表 达 式 在 程 序 中 使 用 一 次 以 上 。

当 “禁 止 未 用 代 码” 选 项 被 设 置 时 ， 优 化 程 序 取 消 无 效 的 代 码 。 例 如 ， 如 果 下 列 语 句 被 编 程： “var := 1; var := X;”， 所 生 成 的 相 应 代 码 只 有： “var := X;”.

当 “ 优 化 算 术 运 算 ” 选 项 被 设 置 时 ， 优 化 程 序 根 据 特 殊 的 操 作 符 简 化 算 术 运 算 。 例 如 ， 表 达 式 “A + 0” 将 被 “A” 代 替 。 当 “ 优 化 布 尔 运 算” 选 项 被 设 置 时 ， 优 化 程 序 根 据 特 殊 的 操 作 符 简 化 布 尔 运 算 。 例 如 ， 布 尔 表 达 式 “A & A” 将 被 “A” 代 替 。

当 “建 立 两 元 判 定 图 表” 选 项 被 设 置 时， 优 化 程 序 用 一 个 有 条 件 的 跳 转 操 作 简 化 表 来 替 代 布 尔 方 程 式 (把AND, 或 , XOR 和 NOT 操 作 符 混 合 在 一 起)。 只 有 当 跳 转 程 序 所 期 望 的 执 行 时 间 小 于 原 表 达 式 所 期 望 的 执 行 时 间 时，才 进 行 转 化。

下 列 表 格 概 括 了 所 期 望 的 优 化 及 每 个 参 数 所 需 要 的 编 译 时 间 ：

增 益 (性 能)	编 译 时 间

运 行 优 化 器	xxxx	(*)

评 估 常 量 表 达 式	xxxxxxxxxx	xxxx

禁 止 未 用 标 号	xxxx	xxxxxxxxxx

优 化 变 量 复 制	xxxx	xxxxxxxxxx

优 化 表 达 式	xxxx	xxxxxxxxxx

禁 止 未 用 代 码	xxxx	xxxxxxxxxx

优 化 算 术 运 算	xxxxxxxxxx	xxxx

优 化 布 尔 运 算	xxxxxxxxxx	xxxx

建 立 二 元 判 定 图 表	xxxxxxxxxxxxxxx	xxxxxxxxxxxxxxx

(*) 编 译 时 间 也 是 2 的 倍 数。


产 生 C 源 代 码

ISaGRAF 工 作 台 能 够 用 “C” 语 言 产 生 源 代 码。 在 这 种 情 况 下， 应 用 程 序 的 整 个 内 容 （ 包 括 SFC 流 程 图 描 述 、 数 据 库 定 义 和 代 码 的 顺 序） 用 “C” 源 代 码 的 格 式 产 生 。 在 此 推 荐 被 生 成 代 码 的 两 种 风 格 ：

CC86M (C 源 代 码 - V3.04)	产 生 非 结 构 化 的 “C” 源 代 码 。 如 果 你 的 目 标 软 件 是 以 ISaGRAF 3.23 以 前 的 版 本 为 基 础，则 应 该 选 择 这 种 风 格。

SCC (结 构 化 的 C 源 代 码)	产 生 结 构 化 的 “C” 源 代 码 。 如 果 你 的 目 标 软 件 是 以 ISaGRAF 3.23 或 以 后 的 版 本 为 基 础 ， 则 应 该 选 择 这 种 风 格 。

以 下 是 在 项 目 目 录 中 产 生 的 两 个 文 件：

APPLI.C	应 用 程 序 的 通 用 源 代 码

APPLI.H	通 用 的 “C” 语 言 定 义

在 生 成 结 构 化 “C” 源 代 码 的 情 况 下 ， 除 了 通 用 的 “APPLI.C” 和 “APPLI.H” 文 件 以 外 ， 还 为 应 用 程 序 的 每 一 个 程 序 产 生 一 个 “.C” 源 文 件 和 一 个 “. H” 定 义 文 件 。

为 了 产 生 最 终 的 可 执 行 代 码 ， 这 些 文 件 必 须 被 编 译 并 与 ISaGRAF 目 标 库 链 接 。 有 关 实 现 上 述 操 作 的 进 一 步 信 息 请 查 阅 “ISaGRAF 输 入 / 输 出 开 发 工 具 箱 用 户 指 南”。

注 意：	 当 ISaGRAF 应 用 程 序 用 “C” 语 言 编 译 时 ， 有 些 诊 断 功 能 （比 如 下 载 应 用 程 序、 在 线 修 改 和 断 点 等） 已 不 存 在 。


浏 览 信 息

“编 辑” 菜 单 包 括 用 于 浏 览 不 同 文 本 文 件 的 命 令 ，这 些 文 件 是 在 代 码 生 成 或 检 查 语 法 操 作 时 在 代 码 生 成 器 窗 口 里 建 立 的 。 代 码 生 成 窗 口 是 一 个 文 本 区 ， 它 包 含 在 代 码 生 成 或 检 查 语 法 操 作 时 所 产 生 的 信 息 。 所 有 信 息 都 被 存 入 磁 盘， 因 此 可 以 用 “编 辑” 菜 单 命 令 来 检 查 这 些 信 息 。

编 辑 命 令

“删 除” 命 令 用 于 清 除 窗 口 的 文 本 区 。 在 每 次 代 码 生 成 或 检 查 语 法 操 作 之 前 窗 口 被 自 动 清 屏。 “拷 贝” 命 令 用 于 拷 贝 窗 口 剪 切 板 中 所 显 示 的 文 本 ， 因 此 它 可 供 其 它 应 用 程 序 （比 如 ISaGRAF 文 本 编 辑 器） 使 用。

浏 览 编 译 程 序 的 输 出 信 息

“执 行 信 息” 命 令 把 上 一 次 “生 成” 或 “校 验” 操 作 时 产 生 的 所 有 信 息 显 示 在 窗 口 文 本 区 里。 该 命 令 适 用 于 所 有 的 错 误 信 息 。

“编 辑” 菜 单 的 其 它 选 项 允 许 用 户 监 视 在 语 法 校 验 和 代 码 生 成 时 产 生 的 附 加 文 本 文 件。 通 常 情 况 下， 这 些 文 件 不 能 用 于 一 个 常 用 的 ISaGRAF 项 目。


定 义 资 源

“选 择” 菜 单 的 “资 源” 命 令 允 许 用 户 定 义 资 源 。 一 个 资 源 是 任 一 用 户 定 义 的 任 何 格 式 （ 文 件 、 数 值 表 ） 的 数 据 ( 网 络 配 置 、 硬 件 的 设 置， 等) ， 该 数 据 必 须 与 生 成 的 代 码 合 并， 以 便 和 生 成 的 代 码 一 起 下 载 到 目 标 PLC 中 。 这 样 的 数 据 不 能 由 ISaGRAF 内 核 直 接 操 作 ， 并 且 通 常 供 安 装 在 目 标 PLC 上 的 其 它 软 件 使 用 。 关 于 可 获 得 的 资 源 的 进 一 步 信 息 ， 请 查 阅 你 的 硬 件 手 册 。

资 源 定 义 文 件

语 言 参 考

举 例

资 源 编 译

实 施


资 源 定 义 文 件

资 源 在 一 个 “资 源 定 义 文 件” 中 被 定 义 ， 该 文 件 与 ISaGRAF 项 目 的 其 它 文 件 一 起 保 存 。 这 是 一 个 单 纯 的 ASCII 文 本 文 件 , 由 ISaGRAF 的 资 源 编 译 程 序 来 处 理 。 当 建 立 应 用 程 序 代 码 时 ， 该 编 译 程 序 被 自 动 地 运 行 。 本 段 落 解 释 资 源 定 义 文 件 的 语 法 。 资 源 定 义 文 件 使 用 ST 语 言 的 词 法 规 则 。 以 “ ( * ” 符 号 开 始 ， 以 “* )” 符 号 结 束 的 注 释 可 被 插 入 文 本 的 任 何 地 方 。 用 单 撇 号 限 定 字 符 串 。 关 于 输 入 数 值 时 使 用 的 词 法 格 式 的 进 一 步 解 释 请 查 阅 本 手 册 的 第 二 部 分。


语 言 参 考

以 下 是 资 源 定 义 文 件 中 使 用 的 关 键 词 和 语 句 表 。

ULONGDATA

VARLIST

BINARYFILE

TEXTFILE

TARGET

ANYTARGET

FROM

TO


ULONGDATA

意 义：	给 定 一 种 资 源 ， 该 资 源 是 一 个 整 型 数 值 表 。 用 无 符 号 的 32 位 整 数 目 标 代 码 存 储 数 值。 按 照 资 源 定 义 文 件 中 规 定 的 顺 序 存 储 数 值 。 数 值 必 须 用 逗 号 分 开 。 资 源 的 名 称 不 能 超 过 15 个 字 符。

语 法:	ULONGDATA '<resource_name>'

BEGIN

...target_selection...

...list of values...

END

举 例:	ULongData 'MYDATA'

Begin

...

0, -1, 100_000,	(* 十 进 制 *)

16#A0B1, 2#1011_0101	(* 十 六 进 制， 二 进 制  *)

End


VARLIST

意 义:	表 示 变 量 地 址 表 的 资 源。 在 资 源 文 件 中， 变 量 用 名 字 标 识。 在 目 标 代 码 中， 以 16 位 整 数 表 示 变 量 地 址， 并 且 按 照 资 源 文 件 中 规 定 的 顺 序 存 储 地 址。 变 量 必 须 用 逗 号 分 开， 名 字 不 能 超 过 15 个 字 符。

语 法:	VARLIST '<resource_name>'

BEGIN

...target_selection...

...list of variable names...

END

举 例:	VarList 'LIST'

Begin

...

Var100, MyParameter, Command, Alarm

End


BINARYFILE

意 义:	给 定 一 种 二 进 制 文 件 资 源。 源 数 据 被 存 储 在 一 个 MS-DOS 文 件 中 。 使 用 一 个 目 标 路 径 名 完 成 对 目 标 资 源 的 定 义 。 行 末 端 的 字 符 不 能 被 ISaGRAF 资 源 编 译 程 序 转 换 。 资 源 的 名 称 不 能 超 过 15 个 字 符 。

语 法:	BINARYFILE '<resource_name>'

BEGIN

...target selection...

FROM '<source_pathname>'

TO '<destination_pathname>'

END

举 例:	BinaryFile 'MYFILE'

Begin

...

From 'c:\user\config.bin'

To '/dd/user/appl/config.dat'

End


TEXTFILE

意 义:	给 定 一 种 文 本 文 件 资 源 。 源 数 据 被 存 储 在 一 个 ASCII 文 件 中 。 使 用 一 个 目 标 路 径 名 完 成 对 目 标 资 源 的 定 义 。 根 据 目 标 主 系 统 的 习 惯 ， 行 字 符 的 末 端 由 ISaGRAF 资 源 编 译 程 序 来 转 换 。 资 源 的 名 称 不 能 超 过 15 个 字 符 。

语 法:	TEXTFILE '<resource_name>'

BEGIN

...target selection...

FROM '<source_pathname>'

TO '<destination_pathname>'

END

举 例:	TextFile 'MYFILE'

Begin

...

From 'c:\user\config.bin'

To '/dd/user/appl/config.dat'

End


TARGET

意 义:	给 定 一 个 目 标 代 码 名 称 ， 该 目 标 代 码 必 须 包 含 资 源 。 关 于 所 操 作 目 标 的 进 一 步 信 息 请 查 阅 前 面 的 章 节 ( 编 译 程 序 选 项 ) 。 在 同 一 个 资 源 块 中 “目 标 ” 语 句 可 以 出 现 多 次 ， 以 便 选 择 几 个 目 标 。 如 果 给 定 了 “AnyTarget” 语 句 ， 则 不 能 使 用 该 语 句 。

语 法:	TARGET '<target_name>'

举 例:	BinaryFile 'MYFILE'

Begin

Target 'ISA86M'

Target 'ISA68M'

...

End


ANYTARGET

意 义:	请 确 定 ： 资 源 必 须 与 所 有 的 由 代 码 生 成 器 产 生 的 目 标 代 码 合 并 在 一 起 。 ISaGRAF 代 码 生 成 器 在 执 行 同 一 个 “ 制 作 ” 命 令 时 ， 可 以 产 生 几 个 目 标 代 码 。 如 果 给 定 了 一 个 或 几 个“ 目 标 ” 语 句， 则 不 能 使 用 该 语 句。

语 法:	ANYTARGET

举 例:	ULongData 'MYDATA'

Begin

AnyTarget

...

End


FROM

意 义:	给 定 一 个 BinaryFile 或 TextFile 资 源 的 源 路 径 名 ( 在 装 有 ISaGRAF 工 作 平 台 的 PC 上 )。用 于 分 隔 路 径 名 部 件 ( 驱 动 器 ， 目 录 ， 字 头 ， 字 尾 ) 而 使 用 的 字 符 必 须 遵 守 MS-DOS 系 统 的 习 惯 。

语 法:	FROM '<target pathname>'

举 例:	BinaryFile 'MYFILE'

Begin

...

From 'c:\user\config.dat'

To '/dd/user/appl/config.dat'

End


TO

意 义:	给 定 一 个 BinaryFile 或 TextFile 资 源 的 目 标 路 径 名 ( 在 目 标 系 统 上 ) 。 用 于 分 隔 路 径 名 部 件 ( 驱 动 器 ， 目 录 ， 字 头 ， 字 尾 ) 而 使 用 的 字 符 必 须 遵 守 目 标 主 系 统 的 习 惯。

语 法:	TO '<target pathname>'

举 例:	TextFile 'MYFILE'

Begin

...

From 'c:\user\config.dat'

To '/dd/user/appl/config.dat'

End


举 例

以 下 是 一 个 资 源 定 义 文 件 的 完 整 例 子：

(* 资源定义文件 *)

ULongData 'DATA1'	(* 数 值 表 *)

Begin

   Target 'ISA86M'	(* 仅 用 于 该 目 标  *)

   1, 0, 16#1A2B3C4D, +1, -1	(* 数 值  *)

End

VarList 'VLIST1'	(* 变 量 表 *)

Begin

   Target 'ISA86M'	(* 仅 用 于 该 目 标 *)

   Valve1, StateX, Command, Alrm1	(* 变 量 名 *)

End

BinaryFile 'FILE1'	(* 二 进 制 文 件 资 源 *)

Begin

   AnyTarget	(* 供 所 有 目 标 使 用 *)

   From 'c:\user\updatef.bin'	(* 在 PC 上 的 源 文 件 *)

   To 'updatef.cfg'	(* 在 PLC 上 的 目 标 文 件 *)

End

TextFile 'FILE2'	(* 文 本 文 件 资 源 *)

Begin

   Target 'ISA68M'

   From 'c:\nw\nwbd.txt'	(* 在 PC 上 的 源 文 件 *)

   To '/nw/dat/nwbd'	(* 在 PLC 上 的 目 标 文 件 *)

End


编 译 资 源

如 果 资 源 已 被 输 入 到 资 源 定 义 文 件 中， 则 在 ISaGRAF 代 码 生 成 的 末 尾 将 出 现 一 个 对 话 框 。 按 下 “启 动 编 译” 按 钮 ， 以 便 运 行 资 源 编 译 程 序 。 输 出 的 信 息 和 错 误 将 被 显 示 在 主 控 制 中 。 要 想 取 消 资 源 编 译 操 作 ， 请 按 下 “ 退 出 ” 按 钮 。 在 这 种 情 况 下 ， 资 源 将 不 被 添 加 到 ISaGRAF 代 码 中。


实 施

资 源 的 数 量 、 数 据 行 和 文 件 的 大 小 不 受 ISaGRAF 的 限 制 。 带 有 一 个 资 源 目 录 的 资 源 被 保 存 在 已 生 成 代 码 的 末 尾 。 以 下 是 资 源 目 录 的 格 式 ( 使 用 C 符 号 表 示 法 )：

__RESOURCE:

{

  long nbres;	/* 被定义的资源数量 */

  {

    char name[16];	/* 资源的名称 */

    long type;	/* 资源的数据类型 */

    long size;	/* 数据块的准确大小 */

    void *data;

    char *path_offset;	/* 指向一个字符串 */

  } /*nb of records */

}

以 下 是 “类 型” 域 中 可 能 出 现 的 数 值：

1 = 二 进 制 文 件

2 = 文 本 文 件

3 = ulong 数 据 (在 此 情 况 下，不 使 用 path_offset 域)

4 = 变 量 表 (在 此 情 况 下，不 使 用 path_offset 域)

对 于 文 本 文 件 来 说 ， 按 照 目 标 系 统 的 习 惯 ， 行 字 符 的 末 尾 是 由 资 源 编 译 程 序 来 转 换 的 。 所 有 指 针 （ 标 明 数 据 项 位 置 的 一 种 标 识 符 ） 与 相 关 结 构 地 址 之 间 的 偏 移 距 离 为 32 位 。 所 有 的 资 源 名 称 和 路 径 名 是 以 空 字 符 结 尾 的 字 符 串 。 路 径 名 和 数 据 按 资 源 目 录 来 编 排 。