码 的 获 取, 需 要 注 意 的 是 由 于39 码 字 符 集 中 包 括 字 符, 在 自 动 增 值 时 要 与 纯 数 字 码 区 别。
---- 下 面 以 单 号 打 印 为 例, 介 绍 条 形 码 打 印 的 程 序 流 程。
---- 1 . 检 查 各 项 参 数 设 置 是 否 完 全 正 确, 若 正 确, 则 继 续, 否 则 退 出;
---- 2 . 获 取 各 项 参 数 设 置;
---- 3 . 为X 坐 标 取 初 值( 纸 的 左 边 打 印 边 界);
---- 4 .( 循 环A) 是 否 打 印 完 一 行(I 条 条 码) ? 是 则 转14;
---- 5 . 本 条 条 码 是 否 为 空 ? 是 则 将 横 坐 标 加 上 一 条 条 码 之 宽 度;
---- 6 . 打 印 起 始 符;
---- 7 .( 循 环B) 是 否 打 印 完 本 条 条 码(J 个 字 符) ? 是 则 转10;
---- 8 . 打 印 一 个 字 符 的 条 码;
---- 9 .( 循 环B) 下 一 个 字 符;
---- 10 . 打 印 终 止 符;
---- 11 . 修 改X 坐 标;
---- 12 .( 循 环A) 下 一 条 条 码
---- 13 . 修 改Y 坐 标;
---- 14 . 打 印 本 行 每 一 条 码 的 人 工 识 别 字 符;
---- 15 . 本 页 是 否 已 打 满 ? 是 则 打 印, 并 对 新 页 坐 标 初 始 化;
---- 16. 退 出
---- 四、 程 序 代 码:
---- 用 于 检 查 参 数 设 置 正 确 性 的 程 序 主 要 从 各 项 参 数 间 的 关 系 去 检 查。 如 根 据 使 用 的 宽 度、 高 度、 每 行 条 码 数, 判 断 是 否 超 出 了 纸 的 打 印 范 围; 输 入 的 号 码 是 否 合 法 等。
---- 可 以 为 每 字 符 设 计 一 段 各 自 的 打 印 程 序, 这 种 方 式 编 程 简 单。 也 可 以 将 打 印 程 序 与 条 形 码 的 编 码 规 则 分 离, 通 过 参 数 传 递 某 一 字 符 的 编 码 规 则, 不 同 的 字 符 共 享 同 一 打 印 程 序。 本 列 采 用 前 一 种 方 式。 如 字 母“J” 的 编 码 规 则 为:“N N N N W W W N N”, 打 印 程 序 代 码 如 下:
Private Sub prn_J()
Printer.Line (x, y)-Step(widt, high), , BF 注释:打印窄条
x = x + widt 注释:改变X坐标
x = x + widt 注释:打印窄空
Printer.Line (x, y)-Step(widt, high), , BF
x = x + widt
x = x + widt
Printer.Line (x, y)-Step(w_n * widt, high), , BF 注释:打印宽条
x = x + w_n * widt 注释:改变X坐标
x = x + w_n * widt 注释:打印宽空
Printer.Line (x, y)-Step(w_n * widt, high), , BF
x = x + w_n * widt
x = x + widt
Printer.Line (x, y)-Step(widt, high), , BF
x = x + widt
x = x + widt 注释:打印位空
End Sub
---- 其 中x,y 分 别 为 坐 标 值,w_n 为 宽 窄 元 素 宽 度 比, widt 为 窄 元 素 的 宽 度 值( 点), high 为 条 形 码 高 度, 每 打 印 一 个 条 元 素, 应 立 即 改 变X 坐 标, 以 便 打 印 下 一 个 元 素; 打 印 空 元 素 时, 由 于 是 不 着 色, 只 需 改 变X 坐 标 即 可; 每 一 个 字 符 打 印 结 束 时, 应 打 印 一 个 位 空( 本 列 中 位 空 宽 度 等 于 窄 空)。 其 它 的42 个 字 符 的 编 码 规 则, 读 者 可 以 在 有 关 条 形 码 技 术 的 文 献 中 查 到。