您好,欢迎访问三七文档
第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数据库和表网管系统中用到的通讯属性信息,地址、数据、触发等信息统一保存到一个数据库当中。数据库管理系统用AdaptiveServerAnywhere7.0,数据库文件命名为tv_net.db,用户名、口令分别为dba和sql。在数据库tv_net.db中建立三个表:comm、config和s_id。其中comm用来保存通讯地址、数据等信息,config保存通讯属性信息,s_id用来记录当前工作的网络编号。表结构如下:返回章目录字段名类型宽度含义idchar8网络编号,主关键字namechar20器件名称fncchar20模块功能addr1char8地址1addr2char8地址2dochar8数据txdchar8触发note1char20注释1note2char20注释2note3char20注释3note4char20注释4note5char20注释5字段名类型宽度含义portnochar1端口号,主关键字settingchar12通讯协议rthchar3接收缓冲区收到指定字符数,产生OnComm事件sthchar3输出缓冲区少于指定字符数,产生OnComm事件inlenchar3每次从接收缓冲区读取的字符数字段名类型宽度含义idchar8网络编号,主关键字表8.1Comm结构表8.2Config结构表8.3s_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\ODBCDriver中记录了所有已安装的ODBC驱动程序。HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI中记录了各种ODBC驱动程序的相关信息。HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBCDataSources记录了各种数据源的类型。HKEY_CURRENT_USER\Software\ODBC\ODBC.INI记录了各种数据源的详细信息。返回章目录通过程序对注册表中相应的键进行配置,可达到自动配置ODBC数据源的目的。下面以AdaptiveServerAnywhere7.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公司提供的通讯控件MicrosoftCommunicationsControl(mscomm32.ocx),利用它可以方便地实现串口通讯。关闭图例打开图例返回章目录8.5.2窗口实例变量及open事件代码在窗口中声明如下实例变量:booleandb//单步开关booleanjx//继续开关booleanpp//是否接受到指定的数据DataStoreds_1//数据存储实例变量TreeViewItemitem//树视图项(结构变量)intlevel//当前层数stringid_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(flag_i)等待接收指定的数据flag_i。返回本节前面提到,在窗口中声明一些实例变量,其中与自定义函数相关的实例变量有:布尔型变量db(单步开关)、jx(继续开关)和pp(是否匹配)。变量db的值用来控制通讯方式,由窗口中“单步”复选框的状态决定,“单步”复选框的clicked代码为:Ifcbx_1.CheckedThendb=trueElsedb=falseEndIf变量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.exemscomm32.ocx在一台新机器上首次运行需要注册ActiveX控件mscomm32.ocx和配置ODBC。关闭图例打开图例返回章目录
本文标题:有线电视网管系统
链接地址:https://www.777doc.com/doc-1480399 .html