1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第8章 有线电视网管系统,8.1 有线电视网介绍,8.2 基础设计,8.3 自动配置ODBC数据源,8.4 参数设置与数据维护,8.5 串行通讯实现,8.6 运行与公布,退出,
2、返回总目录,第1页,8.1 有线电视网介绍,经过这个实例读者能够了解到:怎样利用程序自动配置ODBC、怎样使用串行口进行通讯、怎样使用TreeView。另外,还包括到数据存放对象使用、公布应用程序等内容。,本系统功效是利用有线电视线路上网,使有线电视网成为多功效信息业务平台,并经过计算机实现对有线电视信号和数据通讯分级、分户控制。系统结构如图8.1所表示。,打开图例,关闭图例,返回章目录,第2页,8.2 基础设计,8.2.1 对象库和应用程序对象,建立目标tv_net.pbt、对象库tv_net.pbl和应用程序对象tv_net。,8.2.2 数据库和表,网管系统中用到通讯属性信息,地址、数据
3、触发等信息统一保留到一个数据库当中。数据库管理系统用Adaptive Server Anywhere 7.0,数据库文件命名为tv_net.db,用户名、口令分别为dba和sql。在数据库tv_net.db中建立三个表:comm、config和s_id。其中comm用来保留通讯地址、数据等信息,config保留通讯属性信息,s_id用来统计当前工作网络编号。表结构以下,:,返回章目录,第3页,字段名,类型,宽度,含义,id,char,8,网络编号,主关键字,name,char,20,器件名称,fnc,char,20,模块功效,addr1,char,8,地址,addr2,char,8,地址,d
4、o,char,8,数据,txd,char,8,触发,note1,char,20,注释,note2,char,20,注释,note3,char,20,注释,note4,char,20,注释,note5,char,20,注释,字段名,类型,宽度,含义,portno,char,1,端口号,主关键字,setting,char,12,通讯协议,rth,char,3,接收缓冲区收到指定字符数,产生OnComm事件,sth,char,3,输出缓冲区少于指定字符数,产生OnComm事件,inlen,char,3,每次从接收缓冲区读取字符数,字段名,类型,宽度,含义,id,char,8,网络编号,主关键字,表8
5、1 Comm结构,表8.2 Config结构,表8.3 s_id结构,返回本节,第4页,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!,其它属性选默认值。主窗口无需任何
6、编码。,8.2.6 应用程序对象代码,打开应用程序对象tv_net,对其open事件编写以下代码:,打开图例,关闭图例,返回本节,第5页,8.3 自动配置ODBC数据源,Windows,中全部,ODBC数据源,在系统,注册表,中都有记载,,,所以只要对注册表中项目进行对应修改即可。,与ODBC相关键有:,HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INIODBC Driver,中统计了全部已安装ODBC驱动程序。,HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INI,中统计了各种ODBC驱动程序相关信息。,HKEY_CURREN
7、T_USERSoftwareODBCODBC.INIODBC Data Sources,统计了各种数据源类型。,HKEY_CURRENT_USERSoftwareODBCODBC.INI,统计了各种数据源详细信息。,返回章目录,第6页,经过程序对注册表中对应键进行配置,可到达自动配置ODBC数据源目标。,下面以Adaptive Server Anywhere 7.0数据库tv_net.db为例介绍ODBC代码配置方法。,首先,建立一个如图8.4所表示窗口w_odbc。,“确定”按钮cb_1clicked代码以下:,“取消”按钮cb_2clicked代码为:close(parent)。,打开图例
8、关闭图例,返回本节,第7页,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,返回章目录,第8页,窗口w_d_inopen事件代码,各命令按钮clicked事件代码以下
9、首页”,“上页”,“下页”,“末页”,“插入”,“删除”,“保留”,“查找”,“全部”,“退出”,“查找”和“全部”clicked代码触发窗口u_serch用户事件实现查询。,返回本节,第9页,8.5 串行通讯实现,8.5.1 窗口布局及控件,为进行串行通讯,我们建立一个如图8.7所表示窗口w_comm。它是,有线电视网管系统关键模块。,ole_1,控件是Microsoft企业提供通讯控件Microsoft Communications Control(mscomm32.ocx),利用它能够方便地实现串口通讯。,关闭图例,打开图例,返回章目录,第10页,8.5.2 窗口实例变量及open
10、事件代码,在窗口中申明以下实例变量:,boolean db /单步开关,boolean jx /继续开关,boolean pp /是否接收到指定数据,DataStore ds_1 /数据存放实例变量,TreeViewItem item /树视图项(结构变量),int level /当前层数,string id_name512,2 /保留当前层id和name值,窗口w_commopen事件代码:,返回本节,返回本节,第11页,8.5.3 按钮,cb_4,(“转”)clicked事件代码,命令按钮,cb_4,(“转”)用来控制树视图展开到指定编号节点,其clicked事件代码以下:,8.5.4 树
11、视图控件,tv_1,itempopulate事件代码,上面程序段中用函数expandall()展开树视图某一分支全部层,每展开一项时,树视图控件都要产生一次itempopulate 事件,当用鼠标双击树视图某一项或单击左边“+”时,一样也会产生itempopulate事件。该事件经过以下代码进行项目展开:,8.5.5 树视图控件,tv_1,clicked,事件代码,单击树视图tv_1某一项,产生clicked事件,经过以下代码显示当前项数据,并保留当前id信息到表s_id。,返回本节,第12页,8.5.6 自定义函数,为优化程序,在窗口w_comm中定义了5个对象级函数,供窗口中各代码段调用。
12、自定义函数名称和功效如表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。,返回本节,第13页,前面提到,在窗口中申明一些实例变量,其中与自定义函数相关实例变量有:布尔型变量db(单步开关)、jx(继续开关)和pp(是否匹配)。,变量db值用来控制通
13、讯方式,由窗口中“单步”复选框状态决定,“单步”复选框clicked代码为:,If cbx_1.Checked Then,db=true,Else,db=false,End If,变量jx值由窗口中“继续”命令按钮(cb_3)设置为true,它clicked事件代码只有一行:,jx=true,返回本节,第14页,8.5.7“通讯”、“保留”和“退出”按钮代码,“通讯”按钮用来经过串行口发送当前节点指定地址、数据和触发信息并接收串行口输入信息。它clicked事件代码为:,“保留”命令按钮用来将当前节点数据保留到表comm中,使得在此能够修改节点数据。它clicked事件代码为:,“退出”命令按钮用来去除数据存放实例并关闭窗口,其clicked事件代码为:,返回本节,第15页,8.6 运行与公布,窗口w_comm运行情况如图8.9所表示。,系统调试、运行成功后,建立一个工程,编译生成exe文件,这里不需要资源文件,也无须生成DLL文件。,其中,注册OCX.BAT经过regsvr32.exe来注册ActiveX控件mscomm32.ocx,内容为:,regsvr32.exe mscomm32.ocx,在一台新机器上首次运行需要注册ActiveX控件mscomm32.ocx和配置ODBC。,关闭图例,打开图例,返回章目录,第16页,






