第 8章 有线电视网管系统
8.1 有线电视网简介
8.2 基础设计
8.3 自动配置 ODBC数据源
8.4 参数设置与数据维护
8.5 串行通讯的实现
8.6 运行与发布
退出
返回总目录
8.1 有线电视网简介
? 通过这个实例读者可以了解到:如何利用程序自
动配置 ODBC、如何使用串行口进行通讯、如何使
用 TreeView。此外,还涉及到数据存储对象的使
用、发布应用程序等内容。
? 本系统的功能是利用有线电视线路上网,使有线
电视网成为多功能信息业务平台,并通过计算机
实现对有线电视信号和数据通讯的分级、分户控
制。系统结构如图 8.1所示。
打开图例 关闭图例
返回章目录
8.2 基础设计
? 8.2.1 对象库和应用程序对象
? 建立目标 tv_net.pbt、对象库 tv_net.pbl和应用程序对象
tv_net。
? 8.2.2 数据库和表
? 网管系统中用到的通讯属性信息,地址、数据、触发等
信息统一保存到一个数据库当中。数据库管理系统用
Adaptive Server Anywhere 7.0,数据库文件命名为
tv_net.db,用户名、口令分别为 dba和 sql。在数据库
tv_net.db中建立三个表,comm,config和 s_id。其中
comm用来保存通讯地址、数据等信息,config保存通
讯属性信息,s_id用来记录当前工作的网络编号。表结
构如下,
返回章目录
字段名 类型 宽度 含义
id char 8 网络编号,主关键字
name char 20 器件名称
fnc char 20 模块功能
addr1 char 8 地址1
addr2 char 8 地址2
do char 8 数据
txd char 8 触发
note1 char 20 注释1
note2 char 20 注释2
note3 char 20 注释3
note4 char 20 注释4
note5 char 20 注释5
字段





含义
port
n
o
ch
a
r
1 端口号,主关键字
sett
i
n
g
ch
a
r
12 通讯协议
rth ch
a
r
3 接收缓冲区收到指定字符数,产
生 OnComm事件
sth ch
a
r
3 输出缓冲区少于指定字符数,产
生 OnComm事件
inle
n
ch
a
r
3 每次从接收缓冲区读取的字符数
字段名 类型 宽度 含义
id char 8 网络编号,主关键字
表 8.1 Comm结构 表 8.2 Config结构
表 8.3 s_id结构
返回本节
? 8.2.3 数据窗口对象
? 表建立之后,可利用 comm建立一个 FreeForm格式的数
据窗口对象 d_comm,如图 8.2所示。它将放到“通讯数
据维护查询窗口”中,进行数据的增、删、改、查操作。
? 8.2.4 系统功能菜单
? 系统功能通过主菜单 m_main体现。
? 8.2.5 主窗口
? 定义一个主窗口 w_main,窗口类型为 mdihelp!,标题
为“有线电视网管系统”,指定菜单为 m_main,窗口
初始状态为 maximized!,背景颜色设置为 Teal,图标设
置为 UserObject5!,其它属性选默认值。主窗口无需任
何编码。
? 8.2.6 应用程序对象代码
? 打开应用程序对象 tv_net,对其 open事件编写如下代码:
打开图例
关闭图例
返回本节
8.3 自动配置 ODBC数据源
? Windows中所有的 ODBC数据源 在系统 注册表 中都有记载,
因此只要对注册表中的项目进行相应的修改即可 。
? 与 ODBC相关的键有:
? HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\OD
BC Driver中记录了所有已安装的 ODBC驱动程序 。
? HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI 中
记录了各种 ODBC驱动程序的相关信息 。
? HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC
Data Sources记录了各种数据源的类型 。
? HKEY_CURRENT_USER\Software\ODBC\ODBC.INI记录了各
种数据源的详细信息 。
返回章目录
? 通过程序对注册表中相应的键进行配置, 可达到
自动配置 ODBC数据源的目的 。
? 下 面 以 Adaptive Server Anywhere 7.0 数 据 库
tv_net.db为例介绍 ODBC的代码配置方法 。
? 首先, 建立一个如图 8.4所示的窗口 w_odbc。
?, 确定, 按钮 cb_1的 clicked代码如下:
?, 取消, 按钮 cb_2 的 clicked 代码为:
close(parent)。
打开图例 关闭图例
返回本节
8.4 参数设置与数据维护
? 8.4.1 设置和修改串行通讯参数
? 为了设置和修改串行通讯参数,我们建立一个如图 8.5所示
的窗口 w_set
? 窗口打开时,应从表 config中提取串行通讯有关参数,并
显示在对应的单行编辑框中。因此,对 open事件编写如下
代码:
? 8.4.2 通讯数据维护查询
? 前面已建立一个 FreeForm格式的数据窗口对象 d_comm
(见图 8.2)。现在我们建立一个如图 8.6所示的通讯数据维
护查询窗口 w_d_in,进行通讯数据的增、删、改、查操作。
图例 8.5 图例 8.6
返回章目录
? 窗口 w_d_in的 open事件代码
? 各命令按钮的 clicked事件代码如下:
?, 首页,
?, 上页,
?, 下页,
?, 末页,
?, 插入,
?, 删除,
?, 保存,
?, 查找,
?, 全部,
?, 退出,
?, 查找, 和, 全部, 的 clicked代码触发窗口的 u_serch用
户事件实现查询 。
返回本节
8.5 串行通讯的实现
? 8.5.1 窗口布局及控件
? 为进行串行通讯, 我们建立一个如图 8.7所示的
窗口 w_comm。 它是 有线电视网管系统的核心模
块 。
? ole_1 控件是 Microsoft 公司提供的通讯控件
Microsoft Communications Control
( mscomm32.ocx), 利用它可以方便地实现串
口通讯 。
关闭图例打开图例
返回章目录
?8.5.2 窗口实例变量及 open事件代码
? 在窗口中声明如下实例变量:
? boolean db //单步开关
? boolean jx //继续开关
? boolean pp //是否接受到指定的数据
? DataStore ds_1 //数据存储实例变量
? TreeViewItem item //树视图项(结构变量)
? int level //当前层数
? string id_name[512,2] //保存当前层 id和
name值
? 窗口 w_comm的 open事件代码:
返回本节返回本节
? 8.5.3 按钮 cb_4(“转” )的 clicked事件代码
? 命令按钮 cb_4(“转”)用来控制树视图展开到指定编
号的节点,其 clicked事件代码如下:
? 8.5.4 树视图控件 tv_1的 itempopulate事件代码
? 上面的程序段中用函数 expandall()展开树视图某一分支
的所有层,每展开一项时,树视图控件都要产生一次
itempopulate 事件,当用鼠标双击树视图某一项或单击
左边的,+”时,同样也会产生 itempopulate事件。该事
件通过如下代码进行项目展开:
? 8.5.5 树视图控件 tv_1的 clicked事件代码
? 单击树视图 tv_1的某一项,产生 clicked事件,通过下列
代码显示当前项数据,并保存当前 id信息到表 s_id。
返回本节
?8.5.6 自定义函数
? 为优化程序,在窗口 w_comm中定义了 5
个对象级函数,供窗口中各代码段调用。
自定义函数名称和功能如表 8.5所示。
表 8.5 自定义窗口函数
函数名称 功 能
f_btod(bn) 将 8位二进制数 bn( C型)转换为十进制数( N型)。
f_dtob(dcm) 将十进制数 dcm( N型)转换为 8位二进制数( C型)。
f_sd(s_in) 发送一个 8位二进制数 s_in( C型),无返回值。
f_susp() 等待,直到继续开关打开,无参数。
f_wait_i(f
lag_i)
等待接收指定的数据 flag_i。
返回本节
? 前面提到,在窗口中声明一些实例变量,其中与自定义
函数相关的实例变量有:布尔型变量 db(单步开关),jx
(继续开关)和 pp(是否匹配)。
? 变量 db的值用来控制通讯方式,由窗口中“单步”复选
框的状态决定,“单步”复选框的 clicked代码为:
? If cbx_1.Checked Then
? db=true
? Else
? db=false
? End If
? 变量 jx的值由窗口中“继续”命令按钮( cb_3)设置为
true,它的 clicked事件代码只有一行:
? jx=true
返回本节
?8.5.7,通讯”、“保存”和“退出”按
钮代码
?,通讯”按钮用来通过串行口发送当前节点
指定的地址、数据和触发信息并接受串行口
输入的信息。它的 clicked事件代码为:
?,保存”命令按钮用来将当前节点数
据保存到表 comm中,使得在此可以修改节
点数据。它的 clicked事件代码为:
?,退出”命令按钮用来清除数据存储实例
并关闭窗口,其 clicked事件代码为:
返回本节
8.6 运行与发布
窗口 w_comm的运行情况如图 8.9所示。
系统调试、运行成功后,建立一个工程,编译生
成 exe文件,这里不需要资源文件,也不必生成
DLL文件。
其中,注册 OCX.BAT通过 regsvr32.exe来注册
ActiveX控件 mscomm32.ocx,内容为:
regsvr32.exe mscomm32.ocx
在一台新机器上首次运行需要注册 ActiveX控件
mscomm32.ocx和配置 ODBC。
关闭图例打开图例
返回章目录