UPS监控软件设计
程序中使用到该软件的5个重要属性:CommPort,Settings,PortOpen,Input,Output。Settings属性设置为“1200,N,8,1”。PortOpen属性使用前必须打开,用完后必须关闭。图3是该监控软件的主流程图。
图3 上位机监控软件主流程图
该软件包含对30多种电源事件的处理,处理的方式有:通知系统管理员,执行命令文件,发送电子邮件或传呼信息给指定的用户报警,在严重的情况下执行文件自动保存后关闭系统。这里主要通过调用系统的API函数来实现。实际上,在整个软件的编写过程中,很多子程序都用到了相应的API函数调用。使用Windows API,可以访问常用代码库,使用通过测试的和认证过的代码,获得跨平台的兼容性,得到一个更小巧的应用程序。
该软件通过输出电流来推算负载百分比,而蓄电池的电压可以反映电池的剩余容量,所以程序通过测量电池电压并查表来近似推算蓄电池的剩余容量。并通过当前输出电流和计算得到的电池剩余容量估算出电池的剩余放电时间,再根据得到的剩余放电时间来决定是否需要进行计算机的自动保存操作。如果自动存档时,档案未赋予文件名,软件以temp格式暂存或离开,供电系统正常后,用户还可查看上次关闭Windows时关闭的应用程序名称和储存的档案。
由于该软件要适应各种主流操作系统,如Win9X和Win2000。当文件自动保存后,要退出操作系统,安全关机。这时,要注意两类操作系统的区别。在Win9X中退出操作系统,只需调用一个底层的API函数ExitWindowsEx()就可以了,但是Win2000用的是NT的内核,Windows NT不象Win9X和DOS那样可以随意进行底层的操作,它非常注重系统每个进程的权利(这也是为什么Win9X和DOS底下病毒成灾的原因),在Win2000下,要退出操作系统,必须赋予它足够的权限。图4是关机子程序流程图。
图4 关机子程序流程图
为了绘制UPS各个运行参数的实时平滑曲线,得到扫描的效果,本程序中使用了一个重要的API函数BitBlt。在主窗体的菜单中,“窗口”主菜单在设计时,选取“显示窗口列表”项。这样,不用编写任何代码,“窗口”主菜单下就会自动显示MDI窗体的已打开子窗体的列表。其它子菜单的程序也很简单,只需调用MDIForm对象的Arrange方法就可以了。“语言”菜单下的“英文”或简体中文,编程的思路和过程是一样的,只不过是做做翻译工作而已。对于菜单中的“关于UPS监控软件”,主要是获得注册表中的一些系统信息,Visual Basic开发软件本身也带有这方面的例示窗体和源代码,可以根据需要作相应的改变。
3 结语
该软件在Windows98和Windows2000下调试通过,其功能也基本上能满足一般UPS监控系统的要求。不过,程序运行时总觉得不是很流畅,这是因为当一个窗体界面的设计中要容纳多张图片和多个控制时,将出现窗体显示速度明显变慢的现象。为此,将“界面设计窗体”和“功能实现窗体”分开处理,基本可以解决这一问题。即在设计时根据需要设计漂亮的界面,但是在全屏运行时将该界面复制到剪贴板上,然后将其作为一张图片粘贴在功能实现窗体的背景上。这样,从外观上看效果相同,但是显示速度明显加快。不过,不可避免地增加了程序本身的存储容量。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)