GW9G25显示子系统详细设计说明书.doc

上传人:文库蛋蛋多 文档编号:2883051 上传时间:2023-03-01 格式:DOC 页数:30 大小:985.50KB
返回 下载 相关 举报
GW9G25显示子系统详细设计说明书.doc_第1页
第1页 / 共30页
GW9G25显示子系统详细设计说明书.doc_第2页
第2页 / 共30页
GW9G25显示子系统详细设计说明书.doc_第3页
第3页 / 共30页
GW9G25显示子系统详细设计说明书.doc_第4页
第4页 / 共30页
GW9G25显示子系统详细设计说明书.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《GW9G25显示子系统详细设计说明书.doc》由会员分享,可在线阅读,更多相关《GW9G25显示子系统详细设计说明书.doc(30页珍藏版)》请在三一办公上搜索。

1、模板编号:0022文件编号.-版本编号V. 修订状态归档日期-南京能瑞自动化设备股份有限公司企业文件GW2012-9G25 显示子系统 项目详细设计说明书拟制: 审核: 批准: 南京能瑞自动化设备股份有限公司发布版 本 历 史版本号/修改状态拟制人/修改人拟制/修改日期更改理由主要更改内容(写要点即可)1.0张文超2012-12-25创建无1.1张文超2012-12-29修改整体思路2.0张文超2013-6-3修改详细思路文档注1:每次更改归档文件时,需填写此表。注2:文件第一次归档时,“更改理由”、“主要更改内容”栏写“无”。目 录1引言41.1编写目的41.2术语41.3参考文献52系统功

2、能说明52.1应用场合62.2功能描述63设计约束63.1需求约束63.2隐含约束64设计策略65总体设计75.1总体结构设计75.2功能子系统清单115.3显示画面索引结构设计116接口设计186.1硬件接口186.2软件接口186.2.1MiniGUI接口186.2.2操作系统接口186.2.3平台接口186.2.4主应用接口197系统安全207.1系统安全207.2数据安全207.3后备和恢复207.4出错处理207.5计算机病毒的防治措施218开发环境的配置211 引言1.1 编写目的本文档的目的旨在推动软件工程的规范化,包括程序系统的基本处理流图、程序系统的组织结构、功能模块划分、接

3、口设计、运行设计、数据结构设计和安全性设计等内容。为程序的详细设计奠定基础。V2.0的编写是为了详细列出I型集中器和II型专变的人机交互系统各个函数的实现与逻辑,需要注意的是,人机交互系统是基于MiniGUI系统开发的,所以在阅读前,请务必对MiniGUI有一定的了解!而关于涉及到MiniGUI的知识,我将不做任何描述!1.2 术语 测量点(measured point):指可以测量出唯一的一组电气量值的测量装置与终端的顺序电气连接点,当物理上相同的一个电气连接点被多个装置所测量,或者被一个装置所测量但通过多种方式被传递到终端时,按照多个测量点计,每个测量点具有唯一的逻辑定位编码,是该装置在终

4、端的参数配置、数据应用的唯一对象标识。 计量点的数据来源,可以是485表或模拟量输入、脉冲表、计算值(包括总加表)、交采表。 规约在远动系统中,为了正确地传送信息,必须有一套关于信息传输顺序、信息格式和信息内容等的约定。这一套约定,称为规约。 终端安装于电力客户现场的用于现场服务与管理的设备。包括电力负荷管理系统终端、公用变压器监控终端、配电网自动化系统远方终端等各种负荷终端。每个终端都可包含多个计量点。 GUIGraphics User Interface 图形用户界面有时也称为WIMP = Window/Icon/Menu/Pointing Device 窗口、图标、菜单、指点设备。 Mi

5、niGUI由北京飞漫软件技术有限公司开发的 MiniGUI(),是面向实时嵌入式系统发布第 MiniGUI 已广的轻量级图形用户界面支持系统。自 1999 年初遵循 GPL 条款泛应用于手持信息终端、机顶盒、工业控制系统及工业仪表、便携式多媒体播放机、查询终端等产品和领域。目前,MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE等操作系统以及 Win32 平台上运行;已验证的硬件平台包括 Intel x86、ARM(ARM7/ARM9/StrongARM/xSca

6、le)、PowerPC、MIPS、M68K(DragonBall/ColdFire)等等。MiniGUI 1.16 更为基于嵌入式 Linux 的高端嵌入式设备提供了完整的多进程支持,从而将 MiniGUI 从中端市场带到了高端市场。 窗口系统拥有图形用户界面的计算机通过窗口系统(Window System)来管理应用程序在屏幕上的显示。一个图形用户界面系统的组成一般有图2.1.1所示的关系。图2.1.1 图形用户界面系统的组成窗口系统是一个软件系统,它通过把显示屏幕分隔为不同的部分来帮助用户管理和控制不同的显示环境。窗口系统提供基于窗口的工作模式,每个窗口是屏幕上的一个矩形区域,平行于屏幕的

7、边界。应用程序可以拥有一个或多个窗口,窗口系统通常采用“重叠窗口”的概念和机制来管理窗口的显示,各个窗口在屏幕上是相互重叠的。窗口系统克服了老式终端机上字符工作模式下一次只能在一个屏幕做一件工作的缺点,它使得用户在一个屏幕上可以同时看到几件工作,还可以方便地切换工作项目。 根窗口根窗口(root window)是所有窗口的祖先,占满整个屏幕的表面,也称为桌面窗口。本文中反复提到的DESKTOP就是指根窗口。窗口有从属关系,也就是说,某些窗口的生命周期和可见性由它的所有者决定。父窗口通常拥有它们的子窗口。在这里,所有的窗口都是被DESKTOP所拥有!DESKTOP可以控制子窗口的生与灭!1.3

8、参考文献u MiniGUI技术白皮书版本2.0(修订号3)u MiniGUI编程指南版本2.0(修订号3)u MiniGUI用户手册版本2.0(修订号3)2 系统功能说明2.1 应用场合在我们的终端设备中,无论是浙江规约应用还是04国网规约的应用,都离不开人机界面。显示功能是终端不可少的一项功能,但是不同应用,甚至不同现场系统中要求显示的具体内容可能存在部分差别。2.2 功能描述显示系统主要完成三项功能:u 常规菜单显示:主要包括终端实时信息、终端配置参数、终端测量点参数、终端测量点数据、终端参数设置等u 弹出菜单显示:主要包括一些提示信息,如控制信息、升级信息、参数更改信息等u 轮显菜单显示

9、:轮显是终端在长时间无按键操作和远程通信操作时,需要持续循环显示几个固定的画面,可能是终端的实时信息、遥信状态、控制状态、计量点实时数据等用户关心的内容。3 设计约束3.1 需求约束由于具体现场应用需求的一致性比较差,不同系统要求的终端功能不尽相同,显示菜单根据不同的终端类型,不同的系统应用,经常会有所调整,要求显示系统具有灵活的可配置性。在具体实现时,我们在基本版本中先实现主菜单项的可配置,每个主菜单下属的显示画面仍然是固定的。对于图形显示(如实时的功率曲线、电压曲线、电流曲线、电量曲线等)也在基本版本中不做过高要求,先实现原终端中已完成的柱状图显示。本设计暂时只考虑160160点阵的LCD

10、屏。3.2 隐含约束4 设计策略显示模块采用MiniGUI设计,由于MiniGUI的软件架构,不允许它嵌入我们以单进程单线程设计的应用层软件中,只能作为一个单独的应用进程在终端内运行。常规的处理(菜单、轮显)由显示进程处理,需要弹出的画面需要由应用层软件通过进程间通信传递到显示进程处理。同时显示进程需要把按键事件通过进程间通信传递到应用进程做一些特殊处理(如按键消音,强制通话)。在允许通过面板按键设置终端参数的应用中,显示进程还需要把参数更改事件通知应用进程处理。5 总体设计5.1 总体结构设计本设计中,MiniGUI运行在线程模式,可以在不同应用线程中创建多个窗口,但所有的窗口在一个进程或地

11、址空间内运行。但我们的显示系统比较简单,不需要同时显示多个窗口,所以显示应用只设计一个线程。整体架构如下:MiniGUI应用程序MiniGUI应用程序接口ANSI C库设备驱动操作系统可移植层底层硬件 图 基于MiniGUI的嵌入式系统总体架构显示应用主要完成三个工作,包括消息处理、画面绘制、同主调度系统的进程间通信。MiniGUI中的各线程之间采用消息机制进行通信,其中的Desktop线程充当一个消息服务器,消息从Timer消息队列和窗口消息队列取出来后就会投递给Desktop线程,再由它传递给应用线程。消息传递模型如下图所示:MiniGUI中的Timer线程用来完成定时应用,如某菜单下的定

12、时刷新数据、定时菜单跳转等。执行流程图如下:这是一个主线程的执行流程图,在这里有一个重要的消息接收机制,创建主窗口后,它不断的从消息队列中去读消息,然后把消息发送到消息处理机制。消息处理机制再根据,得到的消息类型进行相应的处理,在正常运行的情况下,这个机制是不会结束的,当然主控制系统可以通过sendMessage 关闭窗口消息(MSG_CLOSE)来关闭窗口。在这里要说明的是,此流程图中有两个定时器,一个是定时刷新DESKTOP界面(闪烁图标),第二个是定时去读数据字典里的信息。在DESKTOP收到来自子窗口或者是主控制系统的自定义消息时,DESKTOP会创建并打开一个子窗口。当桌面只显示DE

13、SKTOP窗口的时候,子窗口是不允许运行的,也就是子窗口没有被打开。当由一个子窗口A要进入另个子窗口B,子窗口A就会向DESKTOP发送一个打开子窗口B的消息,然后子窗口A会关掉自己。DESKTOP在收到消息的时候,就会打开子窗口B,同时也可以将子窗口发过来的参数(A要传给B的参数)发给子窗口B。子窗口的执行流程图如下: 同主调度系统的进程间通信,通过socket连接,把本系统设为客户端与主调度系统进行连接通信,流程图如下:5.2 功能子系统清单u Int MiniGUIMain(int argc, const char* argv)MiniGUI入口函数,完成主窗口的创建,打开对应的动态库,

14、并创建窗口控制系统的线程。u Int desktop(void)创建DESKTOP窗口,消息队列的循环读取处理,窗口间通信数据的读取u void creatCtrldata(U32 u32CreatId)根据界面索引号,从menu.ini配置文件中读取菜单界面显示数据u void creatLeafWin(U32 u32CreatId)根据界面索引号,从menu.ini配置文件中读取叶子界面显示数据u void *pthContrlMain(void)人机交互系统的控制系统,负责与守护进程进行通信,对按键的操作计时,对轮显和背光灯进行控制,并且对图标状态的维护等u int ChildExec(

15、U32 u32ChildWindowID,LPARAM lpara)窗口过程函数,实际的显示功能就是在这个函数中实现的,因为MiniGUI的显示主要就是对消息的处理。这个函数中需要处理的消息包括按键消息、定时消息、自定义消息等。每个消息处理中可能包括对显示画面索引的处理和调用统一的处理函数。根据显示画面索引号,调用具体绘画界面函数,显示具体界面内容。其中u32ChildWindowID为要显示窗口的索引号。Lpara为窗口的附件参数u 画面绘图函数集具体绘制终端需要显示的每个画面,详细内容参见8028interface。5.3 显示画面索引结构设计显示界面画面结构设计。(命名统一)局部变量规则

16、:类型+名字,名字原则上采用英文定义,首字母大写;如:指针类型:*pName;结构类型:strName;u32类型变量:u32Name;全局变量:g_类型+名字;如全局指针类型:*g_pName.typedef struct _DISPALY_INFO_HWND u32NowFd;/当前界面句柄HWND softkeyAndPortFd;/当前的告警窗口和小键盘窗口句柄U32 u32WinId;/当前叶子窗口索引号U32 u32LightonFlg;/背光灯亮起标志U32 u32LightonTime;/背光开启时间U32 u32LightonDispTime;/背光灯本次亮起累计时间U32

17、u32PopupFlg;/弹出警告界面有效标志U32 u32TurndispFlg;/轮显有效标志S32 u32TurndispIndex;/当前轮显菜单索引U32 u32TurnTime;/轮显开启时间U32 u32TurndispTime;/当前轮显间隔时间U32 u32NokeyTime;/无按键操作累计时间DISPALY_INFO;extern DISPALY_INFO dispalyInfo;上面的这个结构体是DESKTOP对子窗口的一个控制信息,当有按键操作消息时,或有弹出菜单消息时,在消息处理中,置位u32LightonFlg标志,同时清零u32LightonTime重新开始计时

18、,在定时消息处理中判断u32LightonTime计时是否达到设定背光灯亮起时间,是则复位u32LightonFlg标志。当有接收到弹出画面消息时,置位u32PopupFlg,同时清零popup_time重新开始及时,在定时消息处理中判断popup_time是否达到设定的弹出画面显示时间,是则复位u32PopupFlg,同时处理菜单索引为主菜单或其他菜单。在定时消息处理中,需要无条件的对u32NokeyTime进行累计,u32NokeyTime的清零需要在每个按键消息处理中进行。当u32NokeyTime累计到轮显启动设定时间u32TurnTime, 置位u32TurndispFlg,同时清零

19、u32TurnTime重新开始计数,计数到某设定值u32TurndispTime,轮显下一个菜单。 索引号的定义在本界面系统当中,界面索引号采用的4个字节的16进制数定义:0xABCDEFGH;A表示第一级菜单,AB表示第二级菜单,ABC表示第三级菜单,ABCD表示第4级菜单,ABCDE表示第5级菜单,ABCDEF表示第六级菜单;ABCDEFG表示第7级菜单, ABCDEFGH表示第8级菜单如下图:(0x1)主界面(0x10)主菜单(0x100)测量点数据显示(0x1000)实时数据(0x1001)日数据(输入日期)(0x10010)日数据显示(0x1002)月数据(输入日期)(0x10020

20、)月数据显示(0x101)参数设置与查看(0x1011)设置模式(密码)(0x10110)参数设置(0x101100)通讯通道设置(0x1011000)信道类型设置(0x1011001)通信模式设置(0x1011002)通道详细设置(0x10110020)通讯方式(0x10110021)短信中心(0x10110022)主站IP地址(0x10110023)以太网参数(0x101101)电表参数设置(0x101101)测量点选择(0x1011010)电表档案设置(0x101102)终端时间设置(0x101102)终端时间设置(0x1011020)提示修改(0x101103)界面密码设置(0x101

21、103)界面密码设置(0x1011030)提示修改(0x101104)终端编号设置(0x1011040)提示修改(0x1010)查看模式(0x1010)参数查询(0x10100)通讯通道查看(0x101000)信道类型查看(0x101001)通信模式查看(0x101002)通道详细查看(0x1010020)通讯方式(0x1010021)短信中心(0x1010022)主站IP地址(0x1010023)以太网参数(0x10101)电表参数查看(0x10101)测量点选择(0x101010)电表档案查看(0x10102)终端时间查看(0x10103)终端编号查看(0x102)终端管理与维护(0x10

22、20)终端版本(0x1021)页面设置(0x1022)现场调试(0x10220)测量点参数(0x10221)串口参数(0x10222)GPRS登录信息(0x10223)终端运行状态(0x10224)遥信状态(0x10225)下行模块状态(0x10226)直流模拟量(0x1023)终端重启(0x1024)数据初始化(0x1025)参数初始化(0x1026)载波抄表管理(0x10260)重启抄表(0x10261)停止抄表(0x10262)恢复抄表(0x1027)手动抄表(0x1028)终端数据(0x10280)有功功率(0x10281)无功功率(0x10282)电压电流(0x10283)正向有功(

23、0x10284)正向无功(0x10285)反向有功(0x10286)反向无功(0x10287)电能表示数(0x10288)当月有功需量(0x10289)当月无功需量(0x1028a)上月电能表示数(0x1028b)上月有功需量(0x1028c)上月无功需量(0x1028d)当前时间(0x1028e)结算日还有一些较为独立的界面,如密码输入界面,(在设置模式后出现),我把它的索引号设为:0x3轮显界面为:0X4界面Id号固定,架构Id是可变的,两套ID作为映射。5.4 轮显菜单设置轮显菜单通过定义一个轮显菜单ID数组来设计:typedef struct _TURN_WINDOW_ U32 vie

24、wFlg;/轮显画面对应的ID号U32viewWindowId;/轮显界面的索引号TURN_WINDOW;static TURN_WINDOW viewTurnTURENUM在轮显时通过ID和相应的绘图函数进行显示。而至于有哪些画面参与轮显,是我们在页面设置中设置的。5.5 模块设计在前面,已经大概的介绍了一下整体思路,在这里我将粗略的介绍一下设计每一个模块的实现方法: DESKTOP设计我们把DESKTOP分为两部分,一部分是DESKTOP的显示部分,另一部分是消息传递部分;而消息传递部分又分为,向子窗口传递消息部分和向主控制器传递消息部分!向子窗口传递消息部分,包括接收子窗口发来的消息,向

25、子窗口发送消息等,同样向主控制器传递消息部分也是包括接收和发送两个内容! 模块概念描述DESKTOP的显示部分:这一部分主要是负责界面的显示,包括前面所说的四大窗口类型,其他部分是不可以直接显示界面的;消息传递层:这一部分主要负责对给个窗口的消息进行传递,它从主控制器接过要发送的消息然后发到指定窗口;或者从窗口系统中接收消息再发送到主控制器机制中; 模块设计描述Desktop在前面已经做了简单的说明,desktop是所有口的父窗口,也就是说,DESKTOP可以直接控制各个子窗口。DESKTOP的窗口设置,是采用满屏的风格,即占满整个LCD屏,160*160的大小,在窗口定义和设置属性中,去掉窗

26、口默认的标题栏,状态栏和标题,如下图:I型集中器主界面示图实现方法:CreateInfo.dwStyle = WS_VISIBLE;CreateInfo.dwExStyle = WS_EX_NONE;CreateInfo.spCaption = ;CreateInfo.hMenu = 0;CreateInfo.hCursor = GetSystemCursor(0);CreateInfo.hIcon = 0;CreateInfo.MainWindowProc = WinProc;CreateInfo.lx = 0;CreateInfo.ty = 0;CreateInfo.rx = 160;Cr

27、eateInfo.by = 160;CreateInfo.iBkColor = COLOR_lightwhite;CreateInfo.dwAddData = 0;CreateInfo.hHosting = HWND_DESKTOP;hMainWnd = CreateMainWindow (&CreateInfo);if (hMainWnd = HWND_INVALID)return -1;ShowWindow(hMainWnd, SW_SHOWNORMAL);在主窗口(desktop窗口)中有个重要的自定义消息:MSG_CHILDTODESK,这个消息的功能是接收子窗口发来的创建另一窗口的消

28、息,在这个消息处理中包含了一个重要的函数:ChildExec。这个函数我们在前面也说过,它是打开子窗口的一个入口函数!在desktop窗口中,也创建了一个定时器的消息,它是用来维护时间和顶层、底层状态栏信息! 子窗口设计从显示角度来看的话,子窗口可以分成菜单界面和叶子界面,而所有菜单界面的结构都相似,有菜单界面的标题,button控件和其上的信息组成,唯一不同的就是每个菜单界面的菜单数,即button的数量。所以菜单界面信息定义一下结构体:typedef struct _WINDOW_INFO_U32 u32WindowID;/窗口的逻辑IDS8 s8Title16;/当前窗口的标题;U32

29、u32IdNum;/当前窗口的菜单数目U32 u32ButtonIDMAXMENU;/当前窗口的button的IDS8 s8MenuNameMAXMENU20;/当前窗口菜单名WINDOW_INFO;在叶子界面中信息,远比菜单界面要复杂,因为叶子界面分为设置界面和查询界面,查询界面较为简单,其界面只有显示信息,而没有控件。但是设置界面会有不同的控件,控件大致有两种,一是编辑框,二是下拉选择框。typedef struct _LEAF_WINDOW_ U32 dlgNum;/界面显示项的数目U32 flgSign;/查询窗口和设置窗口的标志U32 unirtSign;/轮显界面是否有单位S8 u

30、nirtDLGNUM20;/单位U32 maxNumDLGNUM;/最大的值U32 comBoBoxInfoNumDLGNUM;/每个下拉框中选项的数目S8 comBoBoxDLGNUMDLGNUM20;/下拉框中的选项内容char title20;/界面的题目S8 dlgNameDLGNUM20;/每个数据项的名字U32 dlgTypeDLGNUM;/每个数据项的类型,下拉框和编辑框还有无U32 pIDDLGNUM;/每个数据项在数字字典中的ID号U32 inpMaxNumDLGNUM;/每个数据项设置的最大长度U32 FNsendDLGNUM;/广播发送修改Fn标志LEAF_WINDOW;

31、 这个结构体是什么菜单界面的信息,开发人员通过更改这个结构体里的信息,来显示不同菜单。甚至可以直接通过修改文件menu.ini,就可以做到创建修改菜单窗口。这样就大大减小了开发者的后期开发的难度。 子窗口的设计部分,相来对说可能会简单点,因为绝大多数的子窗口中模块是相似的,当然这里的子窗口包括警告窗口和输入窗口。在子窗口的设计中,采用对话框的设计风格,但是要注意的是,子窗口并不是采用满屏方式,这样是为了不完全覆盖DESKTOP界面。子窗口的大小为:160*108的大小,160是横坐标长度,108是纵坐标长度,单位为像素点。子窗口不能覆盖掉DESKTOP的顶层状态栏和底层状态栏,如图:主菜单示图

32、 在实现的过程中,将子窗口的创建信息和属性,设成是一个类,有不同的子窗口,就有这个类的不同的对象。这样就可以做到所有的子窗口都是继承了一个类的属性!如下:static DLGTEMPLATE DlgYourTaste =WS_VISIBLE,WS_EX_NONE ,0, 17, 160,125,0, 0,5, NULL,0;子窗口的创建, 要用到一个结构体,如下:typedef int (*DispChildWindow)(U32,LPARAM);typedef struct _DISP_INFO_U32 u32DispID;/窗口ID;DispChildWindow p;/窗口的入口函数DI

33、SP_INFO;在这个结构体中有两个数据项,一个是窗口ID,还有一个是窗口的入口函数,这是创建一个子窗口的两个必要元素。在这个结构体中,窗口的入口函数可以相同,但是窗口ID一定是唯一的,这也是识别不同窗口的一个元素,结构体的赋值如下:DISP_INFO dispWINDOWNUMMAX = 0x10, menuWindowCreat,/主菜单-菜单0x100, menuWindowCreat,/测量点数据-菜单0x1000, TimerData,/实时数据0x1001,dayDataSelect,/日数据查询0x10010,dayAndMonDataShow,/日数据0x1002,monthD

34、ataSelect,/月数据查询0x10020,dayAndMonDataShow,/月数据0x101, menuWindowCreat,/模式选择:查询模式,设置模式 -菜单0x1010,menuWindowCreat,/参数查询 -菜单0x10100,menuWindowCreat,/通信通道查询 -菜单0x101000,setAndShowFace,/类型模式查询0x101001,menuWindowCreat,/通道详细查询 - 菜单0x1010010,setAndShowFace,/通讯方式0x1010011,setAndShowFace,/短信中心0x1010012,setAndS

35、howFace,/主站IP地址0x1010013,setAndShowFace,/以太网参数0x10101,InputMeaPointNum,/输入测量点号0x101010,AmmeterFileShow,/电表档案查询0x10102,setTime,/时钟查询0x10103,TerminalNumSet,/集中器编号查询0x10104,SetContrast,/对比度查询0x1011,menuWindowCreat,/参数设置 -菜单0x10110,menuWindowCreat,/通信通道设置 -菜单0x101100,setAndShowFace,/类型模式设置0x101101,menuW

36、indowCreat,/通道详细设置 - 菜单0x1011010,setAndShowFace,/通讯方式0x1011011,setAndShowFace,/短信中心0x1011012,setAndShowFace,/主站IP地址0x1011013,setAndShowFace,/以太网参数0x10111,InputMeaPointNum,/输入测量点号0x101110,AmmeterFileSet,/电表档案设置0x10112,setTime,/时钟设置0x10113,setAndShowFace,/密码设置0x10114,TerminalNumSet,/集中器编号设置0x10115,Set

37、Contrast,/对比度设置0x102, menuWindowCreat,/终端管理与维护 -菜单0x1020,ConcenInfot,/集中器信息0x1021,menuWindowCreat,/页面设置0x10210,viewPropertySet,/属性设置0x10211,viewSet,/画面设置0x1022,menuWindowCreat,/现场调试 0x10220,SiteCommisInter,/交采参数 0x10221,GPRSInter,/GPRS登录信息/ 0x10222,paraInit,/终端运行状态 0x10223,yxState,/遥信状态 0x10224,upMo

38、deStatie,/下行0x10225,LCDPrint,/调试信息0x1023,menuWindowCreat,/终端初始化0x10230,paraInit,/硬件初始化0x10231,paraInit,/数据初始化0x10232,paraInit,/参数初始化0x1024,menuWindowCreat,/载波搜表管理0x10240,paraInit,/启动搜表0x10241,paraInit,/已搜电表0x1025,menuWindowCreat,/手动抄表0x10250,paraInit,/重启抄表0x10251,paraInit,/停止抄表0x10252,paraInit,/恢复抄表

39、/*特殊界面*/0x3,inputPassword,/密码输入界面,(在设置模式后出现)0x4,viewShow,/轮显界面/*/0,NULL;I型集中器的所有界面机会都在这里了,当然还有两个界面没有列在其中,一个是小键盘输入界面,还有一个是告警界面。在设计时,为了方便调用,将小键盘和告警界面作为所有窗口的直接子窗口,即可以直接调用。上面我们所说的是创建子窗口的必要元素,那么有了这些元素,就要实现子窗口的绘制,在本系统中,实现子窗口的函数如下:if (!InitMiniGUIExt()return -1;DlgYourTaste.controls = set_months;DialogBoxI

40、ndirectParam (&DlgYourTaste, HWND_DESKTOP, set_monthsdata, 0L);上面的绘制方法和语法详见MiniGUI编程规范5.6 显示画面函数库的组织显示的画面函数有很多下面,我将一一列出,并做简要说明:.c文件函数说 明main.cint MiniGUIMain(int argc, const char* argv)人机交互系统的入口函数AmmeterFileSet.cint AmmeterFileSet(U32 u32WindowId,LPARAM lpara)创建电表档案设置AmmeterFileShow.cint AmmeterFile

41、Show(U32 u32WindowId,LPARAM lpara)创建电表档案查询ConcenInfo.cint ConcenInfot(U32 u32WindowId,LPARAM lpara)创建集中器信息的界面contrastAndLCDBlight.cvoid contrastAndLCDBlight(int cmd,int sta)Lcd屏对比度和背光灯控制函数dayData.cint dayDataSelect(U32 u32Id,LPARAM lpara)日数据选择日期界面desktop.cint desktop(void)创建主界面GetPrivateProfileStrin

42、g.cGPPSDWORD GetPrivateProfileString从menu.ini文件中读取数据的函数GPRSInter.cint GPRSInter(U32 u32WindowId,LPARAM lpara)创建现场调试界面,GPRS登录信息界面initChildWin.cvoid creatLeafWin(U32 u32CreatId)根据窗口的索引号初始化叶子窗口数据initMenuData.cvoid creatCtrldata(U32 u32CreatId)根据窗口的索引号初始化菜单窗口数据InputMeaPointNum.cint InputMeaPointNum(U32 u32WindowId,LPARAM lpara)创建测量点输入界面LCDPrint.cint LCDPrint(U32 u32WindowId,LPARAM lpara)调试信息显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号