2005年04月21日

昨天买火车票的时候,遇见南师大大二的一位仁兄,谈吐甚欢,我们谈到国家,谈到学校,然后谈到泛泛的本科.在他们眼中,大学的生活还是那么的无忧无虑,没有一丝的紧张,仿佛已经订好了美好未来的机票。

考研呗! 他如是说。学校如是说。以前的我如是说。除了保送研究生的,学校有多少考上研究生的呢?1/5?1/10? 东南超不过这个数,南大也超不过这个数。与当时长龙似的队伍反衬的是最后考场的寥寥数人。

我在这不是回味考研的痛苦,也不是为了跳出来抨击学校大力鼓励考研的不是,而是为每年万万的本科生悲哀。

学校本没有错。有了越来越多的研究生、博士生、博士后,学校的苦力才有增长,学校的研究才有突破,学校才能得到国家的青睐,才能有更多的项目,才能有更好的综合排名,这样才能招更多的本科生。由此每年万万的本科生才能涌进城市的每个角落,然后经历感觉良好的4年生活,再然后像垃圾一样被铲向社会。

社会也本没有错。优胜劣汰本是自然不变的法则。于是乎“硕士以上”贴满了一半招牌,而另一半则贴着“硕士优先”。当然外包公司是决不会和你计较的,因为他们需要的是苦力,像骡子像马那种蒙着头巾就能跑的那种。

我只能为本科生悲哀。当他们还在半夜闲扯的时候,在讨论买哪双鞋更有个性的时候,在研究麦当劳和肯德基哪个更有味的时候,在与自己第x个女友温存的时候,他们决计不会想到几年后,他们将抱着1k5工资的理想四处奔波。

与一年难得一见的系主任比起来,辅导员和班主任绝对是我们学校“童年”时期最“亲近”的人,也确是教了我们很“有用”的东西,比如:学校的英语是绝对不用认真的,因为四级就像吃饭那么轻松;高数是决计是要比专业课难学的的,因为专业课是自己系开的课,决计是会让你过的,而高数却是其他系开的课;xx门课是不用放在心上的,因为这些都不是考研的课程;而至于xx人开的课,不管什么课是决计要去的,因为他以后会是你的导师…….    当然,他们也本没有错的,因为大凡做辅导员和班主任的都是些研究生,他们是决计没有体会过我们找工作时那份茫然…..

本科生是悲哀的,悲哀与学校与社会的脱节,悲哀于社会的一无所知。在这个视本科如粪土的社会,或许也是社会的悲哀。

2005年04月16日

把脉国内软件产业,浪潮通软总裁王兴山开出的药方是打造“两条黄金链”。一条是企业外部的——企业和企业的分工合作;另一条是企业内部的——人才结构形成梯队,高中低人才合理搭配,就像工业化生产一样,分成工序、工段,不同工段用不同类型的人才,形成一个内部生产的价值链条。

王兴山认为,与核心竞争力相比,降低人员成本对于软件企业特别是做软件外包的企业同样重要。“本来这活一个软件蓝领月薪1500元就可以干的,这边弄了个本科生,要5000元”,成本就上去了。软件企业要强化成本意识,“做软件出口,如果你说我有多少博士多少硕士,人家不感兴趣。如果你说蓝领占40%~50%,本科和硕士占20%,博士占10%,他就感兴趣了。”日本人与中国软件企业谈出口项目,是用“人月”乘以不同层次人员的单价而得出成本费用,“如果你把人员层次弄得挺高,这个项目就飞了”。王兴山强调说。做软件加工,要放弃IT的清高与浮躁的心态,要向传统加工制造业学学精细化管理和在微利条件下发展的本领。

人才链中还有个管理成本问题。都是高学历的人,不只“身价”高,管理成本也高。软件企业并不是能人越多越好,一个开发小组里如果都是“能人”,谁也说服不了谁,思想是很难统一的。人才的高低也不能只看学历,有的项目经理长期在一线,有很丰富的经验,尽管学历不高,也是宝贵人才。

现在软件人才的突出问题存在于“两头”,一缺底层的软件蓝领和为工业化配套的软件工程师;二缺有海外工作背景的人才,“拿起来就能与海外谈单子,动手就可做需求与系统分析的人”。王兴山说。这种人一个可以带几十个软件工程师,一个企业有几十个这样的人,企业的规模就出来了。当然,光懂语言还不行,还要熟悉海外用户做事的方法和规矩,要理解人家的业务与文化。有这种丰富海外工作背景的人是目前最稀缺的资源,是规模化的瓶颈。

2005年04月08日

夏翔




大家知道,每当我们格式化软盘或硬盘时系统都会给它分配一个序列号,即用DOS命令dir显示出的“Volume Serial Number is 0A41-0E0A”。该序列号是随机产生的,且具有唯一性。也就是因为这个原因许多软件的测试版本利用该项技术使测试版一旦过了限定期限就不能再使用,即使将该软件重新安装也无济于事。另外,有些共享软件的注册码也是通过这个序列号来生成的。同样的方法我们也可以运用到软件的防拷贝技术。那么如何才能实现上述功能呢?
为了达到目的我们必须首先能够得到硬盘的序列号,其次,为了安全起见我们最好再选择一种加密算法,将加密后的硬盘的序列号作为密文公开存放,软件通过解密得到明文,即硬盘的序列号,通过将解密后的硬盘序列号和实际的硬盘序列号相比较得出程序是否合法。这一步当然是由应用程序秘密运行,用户根本不知道,从而达到软件的二次加密目的,同时也隐藏了软件的合法性识别过程,使破译者无从下手。下面就来谈谈如何具体实现。
一、如何读取硬盘序列号
要读取硬盘序列号我们可以用汇编来实现,但毕竟不容易,况且也不能有效的结合到PB脚本中。在PB中我们可以通过调用Windows提供的外部函数GetVolumeInformationA()来实现。这相对来说比较简单。
该函数的原型为:
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName,
LPTSTR lpVolumeNameBuffer,
DWORD nVolumeNameSize,
LPDWORD lpVolumeSerialNumber,
LPDWORD lpMaximumComponentLength,
LPDWORD lpFileSystemFlags,
LPTSTR lpFileSystemNameBuffer,
DWORD nFileSystemNameSize
);
上述原型中,参数类型只要是以“LP-”开头的表明该参数用的是长指针(Long Pointer)类型,即在PB中调用时的参数传递是通过引用传递。在8个参数中对我们真正有用的只有两个LPCTSTR lpRootPathName和LPDWORD lpVolumeSerialNumber。其中参数lpRootPathName是指向文件系统根目录的地址,我们需要用它来指明所要获取序列号的硬盘盘符;参数lpVolumeSerialNumber是返回的硬盘序列号的地址,这正是我们需要的。
众所周知,PB在调用任何外部函数前都要首先进行函数声明,可以将声明放在全局或局部函数声明中。具体声明如下:
Function Boolean GetVolumeInformationA( &
ref String ls_Rootpath, &
ref String ls_volumnename, &
Ulong lul_VolumeNameSize, ref Ulong lul_VolumeSerialNumber, &
ref Ulong lul_MaximumComponentLength, &
ref Ulong lul_FileSystemFlags, &
ref String ls_FileSystemNameBuffer, &
Ulong lul_FileSystemNameSize &
) Library “Kernel32.dll”
上述声明中,“ref”指明是该参数是通过引用传递的,有关函数引用的详细内容请参见有关教程。声明完毕我们不能马上进行调用,还必需确保已为它分配足够的内存空间,即使是参数引用传递也是这样,否则的话将会出现调用错误,这跟C语言的引用调用不同,这一点往往被忽视,希望读者能够注意。也就是为什么我在调用该函数前将有些字符串参数给它预先分配了多达256个字符空间以及给一些整型类型的参数赋初始值256。完整的读取硬盘序列号的程序代码如下:
/******************* 程序代码 ************************/
String ls_Rootpath, ls_volumnename
ls_Rootpath = “C:” // 指定要得到序列号的硬盘,
// 一般情况都是C盘,除非你能保证用户存在其它逻辑盘或物理盘
ls_volumnename = Space(256) // 分配足够的空间,下同
Ulong lul_VolumeNameSize
lul_VolumeNameSize = 256
Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags
lul_MaximumComponentLength = 256
String ls_FileSystemNameBuffer
ls_FileSystemNameBuffer = space(256)
Ulong lul_FileSystemNameSize
lul_FileSystemNameSize = 256
beep(1)
boolean lb_rtn
lb_rtn = False
lb_rtn = GetVolumeInformationA(ls_Rootpath, ls_volumnename, lul_VolumeNameSize, lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags, ls_FileSystemNameBuffer, lul_FileSystemNameSize)
if lb_rtn = true then
MessageBox(“提示”,”函数调用成功!”)
else
MessageBox(“提示”,”函数调用失败!”)
end if
sle_1.text = String(lul_VolumeSerialNumber) // 得到硬盘序列号
/********************* 结束 *************************/
一旦读取成功我们的任务也就完成了近一半,接下来要做的是怎样选择一个合适的加密算法。
二、选取一个优秀的加密算法
1、数据加密概述
早在几千年前人类就已经有了通信保密的思想和方法。但直到1949年,信息论创始人香农发表著名文章,论证了一般经典加密方法得到的密文几乎都是可破译的。密码学才得以进入了一个新的发展时期。70年代后期,美国的数据加密标准DES和公开密钥密码体制的出现成为近代密码学发展史上的两个重要里程碑。
公开密钥密码体制的概念是由Difie与Hellman于1976年提出。所谓公开密钥密码体制就是加密密钥与解密密钥不同,是一种由已知加密密钥推导出解密密钥在计算上是不可行的密码体制。其中,基于数论中大数分解问题的RSA体制曾被ISO/TC97的数据加密技术委员会SC20推荐为公开密钥数据加密标准。
2、RSA体制的基本原理
该体制是根据寻求两个大素数比较简单,而将它们的乘积分解开则极其困难这一原理来设计的。在已提出的公开密钥算法中它是最容易理解和实现的。RSA在世界上许多地方已成事实上的标准。ISO几乎(但没有明确)已指定RSA用作数字签名标准。该算法已经经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明了该算法有一定的可信度。它的安全性是与大数分解密切相关的。我想通过下表你将会对它的安全性有一个较好的认识,它给出了在计算机每一微妙做一次操作的假定下分解不同大小的N所需要的时间。
N的十进位数  50    75    100   200
时间      3.9小时  104天  74年  3.8X1015年
RSA加密算法具体如下:
(1)选取两个大素数,p和q。为了获得最大程序的安全性,两个素数的长度一样。并计算乘积N(N=pq)。
(2) 随后计算出N的欧拉函数ф(N)=(p-1)(q-1),ф(N)定义为不超过N并与N互素的数的个数。
(3)从[0,ф(N)- 1]中随机选取加密密钥e,使得e和ф(N)互为素数。
(4)计算出满足公式ed=1 modф(N)的d,d为解密密钥。
(5)若用整数X表示明文,整数Y表示密文(X,Y均小于N),则加解密运算为:
加密:Y = X mod N
解密:X = Yd mod N
注意,其中的d和N也互素。e和N是公开密钥,d是秘密密钥。两个素数p和q应舍弃,但千万不要泄密哦。
3、相关数学背景知识
(1)素数:素数是一个比1大,其因子只有1和它本身,没有其它数可以整除它的数。素数是无限的。例如,2,3,5,7……等。
(2)两个数互为素数:指的是它们除了1之外没有共同的因子。也可以说这两个数的最大公因子是1。例如,4和9,13和27等。

(3)模变换:两个数相模,如A模N运算,它给出了A的余数,余数是从0到N-1的某个整数,这种运算称为模运算。

从RSA的基本原理我们得知,对明文进行加密选择一个合适的e很重要,如果你选择合适的话,RSA的加密速度将快得多,并且也不会因为用户机器的限制而要做更多的变换(指在计算中为了避免数据的溢出所进行的转换,毕竟我们用的是PC机再说也用不着很高的安全性)。最常用的三个e值是3,17,65537。在这里我们取的e等于3,当然到底选取哪个e值并没有规定,这里只是为了演示方便罢了。
根据算法定义,
(1)为了方便起见我们选取素数p = 3和q = 11,则N = pq = 3 * 11 = 33。
(2)ф(N)=(p-1)(q-1)= 2 * 10 = 20。
(3)从[0,ф(N) - 1]中,即,[0, 19]之间任意选取加密密钥e = 3,且e和ф(N)互素。
(4)如何从公式ed=1 modф(N)求出解密密钥d?
由模的定理我们可以将公式ed=1 modф(N)转换成形式ed= k * ф(N)+ 1,即3d = k * 20 + 1,将0,1,2,3…依次代入k,求出d。取k = 1,得d = 7。
读者可以通过编程实现随机选取p和q来求出相应的N,e,d。
(5)进行加解密。
对明文进行加密
根据定义,我们首先要根据N的值对明文进行分组,每个分组的值应小于N。如果要加密固定的消息分组,那么可以在它的左边填充一些0(零)并确保该值比N小。例如,我们要对数据X=172035594进行加密(在我的计算机上C盘的序列号是0A41-0E0A,转换成十进制就是172035594),我们首先要将它分成小于N(N=33)的若干小组。可以分成,X1=17,X2=20,X3=3,X4=5,X5=5,X6=9,X7=4。对第一分组X1运用加密公式得到加密密文Y1=X1e mod N = 173 mod 33 = 29,依次将其余分组进行加密得到,Y2=14,Y3=27,Y4=26,Y5=26,Y6=3,Y7=31。即密文Y= 2914272626331。我们可以将密文存储在文件或注册表中,每当应用程序启动时先读取密文,并将其解密,再将解密后的结果与硬盘序列号进行比较,以此来判断软件是否合法。在实际运用中我们可以随时通过程序修改密文,比如,将密文去掉一位或将密文颠倒等,就可以实现诸如测试版软件的使用限制问题,
对密文进行解密
对密文进行解密同样要首先对密文进行分组,使每个分组都小于N。将密文Y=2914272626331分组成:
Y1=29,Y2=14,Y3=27,Y4=26,Y5=26,Y6=3,Y7=31
这时我们一定要注意,不要急于将将各分组代入解密公式X=Yd mod N,如果这样做了我们所得到的明文将是X=1202811913,并不是加密时的明文!是不是加密算法有错?绝对不是。回顾加解密的公式,我们不难发现它们做的都是先将一个数进行n次方运算然后在做模运算。问题就出在“n次方运算”上,千万不要忽略PowerBuilder中数值的取值范围,在其它的编程语言中也是如此。在本例中我给明文和密文用的都是unsigned long类型,它的32位所允许最大值是4294967295,的确很大,但我们不能保证一个数在进行了7次方后不超过该最大值。其实,这种情况在对明文加密时也是会发生的,只是33的3次方是35937,远小于最大值,我们将其忽略罢了。
好在问题并不像我们想象的那么复杂。由模的运算规律得知,模运算像普通的运算一样,它是可交换的、可结合的、可分配的。而且,简化运算每一个中间结果的模n运算,其作用与先进行全部运算,然后再简化模n运算是一样的。比如,
(A * B) mod N = ((A mod N) * (B mod N)) mod N。
因此,
X = Y7 mod N
= (Y3 * Y4)mod N
= ((Y3 mod N)*(Y4 mod N))mod N
当然,我们也可以将Y7分解成更多项的乘积。将分组后的密文Y1至Y7依次代入上式得出密文为X = 17 20 3 5 5 9 4。即为正确明文,解密成功。
在实际的运用中考虑到PB没有现成的乘方运算函数,为了便于读者理解原程序是如何实现RSA加密算法的本文所采用的方法是通过FOR…NEXT语句循环来实现乘方运算,读者可以将其做成一个函数,在使用的时候调用。RSA加解密算法的完整程序代码如下:
/**************** 加密程序代码 ***************/
// 以下参数由RSA加密算法得来
integer li_e, li_d, li_n
li_e = 3 // 设置指数e,加密密钥
li_d = 7 // 设置指数d,解密密钥
li_n = 33 // 设置N:两个素数得乘积
string ls_str
ls_str = Trim(sle_1.text) // 将明文转换成字符串,以便随后进行分组
ulong lul_temp
lul_temp = 0
ulong lul_x, lul_y // lul_x: 加密明文; lul_y: 加密密文
int I
do until ls_str = “”
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将明文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
lul_y = 1
for I = 1 to li_e // 进行乘方运算
lul_y = lul_y * lul_temp
next
lul_y = mod( lul_y, 33) // 根据加密公式计算密文
sle_2.text = trim(sle_2.text) + string(lul_y) // sle_2.tex中存放的是加密后的密文
loop
/******************** 结束 *****************/
/**************** 解密程序代码 ***************/
ls_str = Trim(sle_2.text) // 与加密同理,将密文转换成字符串,以便随后进行分组
ulong lul_x0, lul_x1
do until ls_str = “”
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将密文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
// 由于考虑到乘方运算得结果可能会超出数值所允许得最大取值,
// 因此对解密公式进行适当转换,lul_x = lul_x0 * lul_x1
lul_x0 = 1
lul_x1 = 1
// 假如解密密钥是7,则先进行数的4次方运算取模,在进行数的3次方运算取模
for I = 1 to 4
lul_x0 = lul_x0 * lul_temp
next
lul_x0 = mod( lul_x0, 33)
for I = 1 to li_d – 4
lul_x1 = lul_x1 * lul_temp
next
lul_x1 = mod( lul_x1, 33)
lul_x = mod(lul_x0 * lul_x1, 33) // 根据解密公式计算明文
sle_3.text = trim(sle_3.text) + string(lul_x) // sle_3.tex中存放的是解密后的明文
loop
/******************** 结束 *****************/

http://blog.chinaunix.net/article.php?articleId=563&blogId=140

居然不支持下标…

今天上verycd看见一帮人在玩24点游戏,突然想研究下24点的算法问题,24点游戏几乎在任何的机器上都能找到身影,我想不应该是用穷举算法,穷举算法严格上来说不能称为一个算法.

http://www.pcvc.net/category/content.asp?sendid=238 的  天上人间(iskyflying@163.com) 发了如下的思路:
4个数计算24,最后无非出现2种情形:1对3,2对2,即:
          24=f(a,g(b,c,d)      或者
          24=f(g(a,b),h(c,d))
其中a,b,c,d地位相同,因此可以用一个循环遍历即可。
f,g,h为某种四则运算方法,而对g(b,c,d)又可以分解
为1对2:
          g(b,c,d)=i(b,k(c,d))
同样i,k也是某种四则运算方法,b,c,d地位相同,可遍
历。所以最终都会化归到2个数之间的四则运算,设为
          r=p(x,y)
显然x,y地位相同,而四则运算方法p是有限的,且对于
+和*是x,y是无序的,只需要计算一次。

这个算法对穷举遍历做了很大的改进.算法不错.我只能对之做些改进(不支持小数):

1\ 1,2,3,4,6,8,12 是24的约数,做* /的可能性更大一点,在linux下编程时对if 语句做选择优化;而其他的数字,非24的约数,不可能做* / 运算,直接运行+ -  运算

2\ 同样的道理,对 g(b,c,d)  同样可以进行 24/a 的约数处理,同理针对h(),i(),p() 运算

希望有兴趣的提点意见

附:

穷举法遍历解答树的解法 :

#include <math.h>
#include <stdio.h>
#include <dos.h>
typedef struct node { int a;
int b;
int s;
int n;
float num[5];
}NODE;
NODE WorkSpace[4];
float OrgNum[4]={0};
void init()
{ int i;
//system("cls");
printf("Please input 4 number([0,9]),use \",\" to seperate:");
scanf("%f,%f,%f,%f",&OrgNum[0],&OrgNum[1],&OrgNum[2],&OrgNum[3]);
for(i=1;i<=4;i++)
{ WorkSpace[0].num[i] = OrgNum[i-1];
}
WorkSpace[0].n=4;
}

void PushIn(int a,int b,int s,int level)
{ float newnum=-999.0;
int i,j;
switch(s)
{ case 1 : newnum = WorkSpace[level-1].num[a] + WorkSpace[level-1].num[b];break;
case 2 : newnum = WorkSpace[level-1].num[a] – WorkSpace[level-1].num[b];break;
case 3 : newnum = WorkSpace[level-1].num[a] * WorkSpace[level-1].num[b];break;
case 4 : if(WorkSpace[level-1].num[b]!=0)
{newnum = WorkSpace[level-1].num[a] / WorkSpace[level-1].num[b];
break;}
}

WorkSpace[level].a = a;
WorkSpace[level].b = b;
WorkSpace[level].s = s;
WorkSpace[level].n = (WorkSpace[level-1].n)-1;
for(i=1,j=1;i<=WorkSpace[level-1].n;i++)
{ if(i==a) {WorkSpace[level].num[j] = newnum;j++;}
if(i==b) continue;
if(i!=a&&i!=b) {
WorkSpace[level].num[j] = WorkSpace[level-1].num[i];
j++;
}
}
}

void Judge()
{ int i,a,b,s;
if(fabs(WorkSpace[3].num[1]-24)<0.00001)
{printf("\n One solution : ");
for(i=1;i<=3;i++)
{ a=WorkSpace[i].a;
b=WorkSpace[i].b;
s=WorkSpace[i].s;
printf("%3.3f",WorkSpace[i-1].num[a]);
switch(s)
{ case 1: printf("+");break;
case 2: printf("-");break;
case 3: printf("*");break;
case 4: printf("/");break;
}
printf("%3.3f",WorkSpace[i-1].num[b]);
printf(" | ");
}
// getch();
}
}

main()
{ int a,b,s,a1,b1,s1,a2,b2,s2;
init();
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(s=1;s<=4;s++)
if(a!=b)
{ PushIn(a,b,s,1);
for(a1=1;a1<=3;a1++)
for(b1=1;b1<=3;b1++)
for(s1=1;s1<=4;s1++)
if(a1!=b1)
{
PushIn(a1,b1,s1,2);
for(a2=1;a2<=2;a2++)
for(b2=1;b2<=2;b2++)
for(s2=1;s2<=4;s2++)
if(a2!=b2)
{
PushIn(a2,b2,s2,3);
Judge();
}
}
}
}

2005年04月07日

可怜我们周围实在是每什么地方能吃的.昨天和郭亮去南工食堂办了张卡,怎么说也要在这呆2个月,办张卡还是非常有必要的.不过办卡非得白交20块大洋,真是心疼,交的冤枉.

今天算第二次去了,我们出来的早,还有不少选择的余地,如果不用担心钱的话. 不知道以后找到的公司会什么时候吃饭,到了中午就发现吃饭是多么的重要.

一直想不通,市场经济怎么食堂还是那么的贵还是那么多的有人吃. 每每食堂鼓吹外面餐馆是多么不卫生的时候,我就会想起我们食堂大灶上那脏息息的铁铲,或许平时用的时候还拿来过挖坑种树…..

一想到此,我就深恶痛绝理工科类大学里的那种文化, 逆来顺受,对什么事情都是一副无所谓的态度.到底是教育出了问题,还是学生出了问题?反正事实是这样的无可挽回. 但愿我们学校不再一直跟着南大的屁股后面走,比上不足,比下有余,永远都不会成为所谓的"国内知名的大学".

说道"国内知名",那就没什么说的了. 现在还"国内不知名"呢,有问题总是应该的….fate…bs下学校的领导层.

2005年04月06日

 

 

 

 

 

 

 

 

 


界面编辑器

操作说明

 

 

 

 

 

 

 

 

 

 

 

 

 

国电南自股份有限公司 2000

 

 

 

 

 

 

第一章    简介4

1.1           界面编辑器4

1.2           启动界面编辑器5

第二章  工具条7

2.1           工具条简介7

2.2           作图工具条:选择、创建图8

2.3           调色工具条:设定图元的颜色、线型11

2.4           字体工具条:设定图元的字体12

2.5           编辑工具条:编辑、修改图元13

2.6           画面工具条:对窗口的各项操作16

2.7           文件工具条:对画面的各项操作17

2.8           状态条:显示状态信息18

2.9           属性窗:显示、修改图元属性19

2.9.1          画面普通属性:19

2.9.2          画面打印属性21

2.9.3          线图元属性22

2.9.4          矩形图元属性22

2.9.5          椭圆图元属性23

2.9.6          多边形图元属性24

2.9.7          弧和扇形图元属性25

2.9.8          字符串图元属性26

2.9.9          矢量字符串图元属性27

2.9.10         图符图元属性28

2.9.11         位图图元属性29

2.9.12         模拟量图元普通属性29

2.9.13         模拟量图元数据属性31

2.9.14         数字量图元普通属性33

2.9.15         字量图元数据属性34

2.9.16         脉冲量图元普通属性35

2.9.17         脉冲量图元数据属性36

2.9.18         历史量图元普通属性36

2.9.19         历史量图元数据属性37

2.9.20         操作图元数据属性38

2.9.21         操作图元数据属性39

2.9.22         操作图元数据属性39

2.9.23         用户自定义图元属性40

第三章  菜单41

3.1           菜单简介41

3.2           文件菜单42

3.2           编辑菜单50

3.3           工具条菜单52

3.4           图元菜单54

3.5           画面菜单57

3.6           视窗菜单58

3.7           帮助菜单59

3.8           工具条浮动菜单59

3.9           画面浮动菜单60

3.10         图元浮动菜单61

3.11         快捷键64

第四章  图元制作、修改67

4.1           背景图元的制作67

4.1.1线图元的制作:67

4.1.2矩形图元的制作:67

4.1.3椭圆图元的制作68

4.1.4多边形图元的制作:68

4.1.5弧和扇形的制作:68

4.1.6字符串图元的制作:69

4.1.7矢量字符串图元的制作69

4.1.8图符图元的制作:70

4.1.9位图图元的制作:70

4.1.10组合图元的制作:70

4.2           前景图元的制作71

4.2.1遥测量图元的制作:71

4.2.2遥信量图元的制作:72

4.2.3脉冲量图元的制作:72

4.2.4历史量图元的制作:73

4.2.5操作点图元的制作:73

4.3           图元修改74

4.3.1修改图元位置74

4.3.2修改图元大小75

4.3.3修改图元颜色75

4.3.4修改图元线型76

4.3.5修改图元字体76

4.3.6修改图元属性77

4.3.7修改图元重叠关系77

4.3.8删除图元77

4.3.9修改多边形77

4.3.10修改弧或扇形角度77

4.4           复制78

第五章  常用对话框操作79

5.1           文件对话框79

5.2           打印对话框80

5.3           打印设置对话框81

5.4           颜色选择对话框82

5.5           字体选择对话框83

 

 

 

 

 

 

 

 

第一章    简介

1.1    界面编辑器

PS6000监控系统的界面编辑器是生成监控系统的重要工具,地理图、接线图、列表、报表、棒图、曲线等画面都是在界面编辑器中生成的。由界面编辑器生成的画面都能被在线系统调出显示。地理图、接线图、列表是查看数据、进行操作的主要界面,而报表、曲线则主要用于打印。

画面上可以制作两类图元:一类是背景图元,另一类是前景图元。背景图元在线运行时不会发生变化,如画面中的线段、字符、位图以及报表的边框等都是背景图元。前景图元又分为两种:数据前景图元和操作前景图元。数据前景图元根据其代表的实时或历史数据的值的变化而变化;操作前景图元则代表一个操作,当用户使用鼠标点中该图元时,执行这一操作,如调出画面、修改数据、进行遥控等。一般数据前景图元也都是操作前景图元。使用操作前景图元可以把系统使用的画面组织成一个网状或树状结构,在线运行时,用户可以方便地在各画面之间漫游。

画面的大小几乎可以无限,一般以一整屏为最好,这样一来在线运行时不需滚动就可以看到整幅画面。画面分为八层,可以作出详细程度不同的画面,在线运行的初始画面为第一层,如果放大画面,根据放大比例依此显示画面的其余层。

界面编辑器提供了方便的编辑功能,提高了作图效率。同时又提供了报表、列表自动生成工具,加快作图速度。

对于画面中经常使用的符号,例如开关、刀闸、接地、变压器等,可以使用界面编辑器制成图符,在编辑画面时直接调出使用。使用多个图符交替显示,用来代表开关、刀闸的不同状态。

1.2    启动界面编辑器

启动界面编辑器有两种方式:

1.       Windows98/NT桌面上激活快捷方式


2.       Windows98/NT启动菜单上“程序”中的“NSPRO1.2网络版程序组”,选择“界面编辑器”菜单项。

3.       进入界面编辑器之前,弹出密码框:

4.         界面编辑器启动后,屏幕如下图所示:

标题条:    显示界面编辑器名称、版本及当前编辑画面的名称,标题条的左端是系统菜单,右端分别为最小化按钮、恢复按钮和关闭按钮。

菜单条:    界面编辑器菜单,编辑器编辑画面或编辑图符时提供的编辑功能不同,菜单的内容也不相同。

工具条:    排列各工具,工具条可以出现在窗口的四边,如编辑工具条,字体工具条;也可以浮动在窗口中,如作图工具条。

状态条:   显示各种状态信息。

 

 

 

 

第二章  工具条

2.1    工具条简介

工具条是由一组功能相近的工具组成。界面编辑器中有六种工具条:文件工具条、编辑工具条、图形工具条、字体工具条、调色工具条和作图工具条。

工具条中的某些工具对应有菜单项,如画面工具条、文件工具条,选取菜单项也可以完成相同功能,但使用工具条可加快操作速度。

工具条可以显示也可以隐藏。通过选取工具条菜单的菜单项,或者在工具条上点下右键,然后选取弹出菜单的菜单项,都可以使指定的工具条显示或隐藏。

工具条可以在编辑器主窗口四条边的任意位置放置,或变成浮动的,停留在屏幕的任意位置。移动工具条的方法如下:   

·        由固定在边界的工具条成为浮动的工具条。用鼠标左键拖动工具条,一个与工具条大小相同的细边界移动框跟随鼠标移动,将移动框拖离编辑器窗口边界,当移动框变大同时边界变为粗线时释放鼠标左键,工具条将成为浮动的。

·        在编辑器主窗口四条边之间移动。用鼠标左键拖动工具条,一个与工具条大小相同的细边界移动框跟随鼠标移动,将移动框拖近编辑器的窗口边界,当移动框变为与边界相同方向且边界变为细线时释放鼠标左键,工具条将并入相应的边界。

·        由浮动的工具条成为固定在边界的工具条。用鼠标左键拖动浮动工具条的内部(标题部分之下),一个与工具条大小相同的细边界移动框跟随鼠标移动,将移动框拖近编辑器的窗口边界,当移动框变为与边界相同方向且边界变为细线时释放鼠标左键,工具条将并入相应的边界。

作图工具条、编辑工具条、画面工具条和文件工具条可以固定在窗口的任何边界,调色工具条、字体工具条只能固定在窗口的上边界或下边界。作图工具条可以是一列或三列的方式排列,当固定在窗口边界时可以节省窗口空间。

当鼠标的光标移到工具条的某个按键上时,工具名称将在光标附近自动弹出,同时在窗口下方的状态条上会显示相应的解释。因此,要大致了解工具的作用,只需将光标停留在该工具上即可得到一些粗略的提示。

除工具条外,这一章还要介绍属性框和状态条。

2.2    作图工具条:选择、创建图元

       选择工具:

 作图时使用该工具选取画面上的图元作为当前编辑图元,选用选择工具后,鼠标光标变为箭头状,移动光标至图元,点下鼠标左键即完成选择操作。单个图元被选中后,在图元的周围出现一些修改点,其中实心的修改点一般用于修改图元的大小,空心的修改点用于修改图元的角度;被选中的图元还可以被移动、删除和修改属性。也可以同时选中多个图元以便对这些图元同时进行同一操作,选中多个图元的方法有两种:第一种是在选择图元的同时按住SHIFT键,第二种是拖动鼠标左键,产生一个伸缩矩形区跟随鼠标移动,释放鼠标,矩形框内的图元将被同时被选中,第一个被选中的图元称为参照图元,其他被选中图元的修改点以与参照图元不同的方式显示。

       工具锁定:

锁定当前所使用的工具。当工具未被锁定,创建一个新图元后,当前的工具恢复为选择工具;当工具被锁定,则可以保持创建状态,创建多个相同的图元而不需反复选择这一工具。

       线工具:

使用该工具制作线图元。

       矩形工具:

使用该工具制作矩形。

       实心矩形工具 

使用该工具制作实心矩形。

       椭圆工具

使用该工具制作椭圆。

       实心椭圆工具

使用该工具制作实心椭圆。

       多边形工具

使用该工具制作多边形。

       实心多边形工具:

使用该工具制作实心多边形。

       弧工具

使用该工具制作弧。

       扇形工具

使用该工具制作扇形。

       字符串工具:

使用该工具制作一个字符串,字符串可以选用任何字体显示

       矢量字符串工具:

使用该工具制作一个矢量字符串,字符串必须使用矢量字体,矢量字符串可以旋转任意角度。

       图符工具:

使用该工具制作一个静态图符。

       位图工具:

使用该工具制作一个位图,位图可以是BMPPCX格式。

       模拟量工具:

使用该工具制作一个模拟量。

       数字量工具:

使用该工具制作一个数字量。

       脉冲量工具:

使用该工具制作一个脉冲量。

       历史量工具:  

使用该工具制作一个历史量。

       操作点工具:  

使用该工具制作一个操作点

       图元组合工具:

使用该工具制作一个预制的图元组合。图元组合是由若干图元组成,一般将常用的接线图局部形式定义成图元组合,作图时可以直接调出,加快作图速度。

     用户自定义点工具:

使用该工具制作一个用户自定义图元。

以上图元的具体制作过程祥见第四章。

2.3    调色工具条:设定图元的颜色、线型

          调色板:

选择当前作图使用的前景颜色和背景颜色。调色板分为两部分:左侧显示当前使用前景颜色和背景颜色组合,右侧为列出的16种可选颜色,在可选颜色上点下鼠标左键以改变当前作图使用的前景颜色,点下鼠标右键则更换当前画面的底色。如果需要改变右侧的颜色,在该颜色上双击鼠标左键。

       当前线型、线宽:

选择当前图元使用的线型、线宽。线型可以选择实线或虚线,实线可以选择136象素线宽,虚线的线宽只能为1

                                        当前图符:

在图符列表中选择当前图符。当前图符是创建静态图符图元时缺省使用的图符。

                                 当前图元组合:

在图元组合列表中选择当前图元组合。当前图元组合是创建图元组合时的缺省使用的图元组合。

2.4    字体工具条:设定图元的字体

              当前字体:

选择当前图元使用的字体。字体分为三类,以字体名称左侧的小图标区别: 代表该字体为TrueType字体, 代表该字体为终端字体,空白代表该字体为点阵字体。如果当前图元是矢量字符串图元,则只有TrueType字体列在字体列表中。

         当前字号:

选择当前图元使用的字号,字号范围从872

     粗体:

选择当前字体的粗体。

     斜体:

选择当前字体的斜体。

     下划线体:

选择当前字体的下划线体。

2.5    编辑工具条:编辑、修改图元

  剪下:  

将当前选择的图元拷贝到剪贴板,并将图元从画面上删除。

  拷贝: 

将当前选择的图元拷贝到剪贴板上。

 粘贴:   

将剪贴板上的图元拷贝到当前画面上。

  删除: 

将当前选择的图元从画面上删除。

  取消:

取消最近一次操作。用户在画图时进行的创建、修改、删除等动作均被记录,可以由后至前依次取消。

  重做:  

重做被取消的操作。

  图元上移:

调整图元的顺序关系,使下面被覆盖的图元调整到最上面显示。

  图元下移:

调整图元的顺序关系,使上面的图元调整到最下面,使被覆盖的图元显示出来。

  图元左对齐:

被选中的图元按目标图元的左边界对齐。该操作只在同时选中多个图元的情况下有效。

  图元右对齐:

被选中的图元按目标图元的右边界对齐。该操作只在同时选中多个图元的情况下有效。

  图元上对齐:

被选中的图元按目标图元的上边界对齐。该操作只在同时选中多个图元的情况下有效。

  图元下对齐:

被选中的图元按目标图元的下边界对齐。该操作只在同时选中多个图元的情况下有效。

  调整字符串大小:

调整字符串图元外框大小与字符串大小相符。该操作只对字符串图元有效。

  图元相同尺寸:

被选中的图元调整为与目标图元相同的尺寸。该操作只在同时选中多个图元的情况下有效。

  图元等宽:

被选中的图元调整为与目标图元相同的宽度。该操作只在同时选中多个图元的情况下有效。

  图元等高:

被选中的图元调整为与目标图元相同的高度。该操作只在同时选中多个图元的情况下有效。

  图元放大:

将图元的大小放大1/4。单个图元放大,图元左上角位置不发生变化;多个图元放大时,以最左上选中图元为准,各图元的相对位置保持不变。

  图元缩小:

将图元的大小缩小1/4。单个图元缩小,图元左上角位置不发生变化;多个图元缩小时,以最左上选中图元为准,各图元的相对位置保持不变。

  图元左旋:

将图元逆时针旋转90度。单个图元旋转,将图元右上角位置旋转至左上角位置;多个图元旋转时,以包围选中图元的最小矩形为基准,将右上角位置旋转至左上角位置。位图图元、模拟量图元、数字量图元、脉冲量图元、历史量图元旋转时位置发生变化,但其内容保持水平方向。

  图元右旋:

将图元顺时针旋转90度。单个图元旋转,将图元左上角位置 旋转至右上角位置;多个图元旋转时,以包围选中图元的最小矩形为基准,将左上角位置旋转至右上角位置。位图图元、模拟量图元、数字量图元、脉冲量图元、历史量图元旋转时位置发生变化,但其内容保持水平方向。

  保存图元组合:

将图元保存为图元组合,以便以后调出使用。该操作只在同时选中多个图元的情况下有效。

2.6    画面工具条:对窗口的各项操作

  放大  

将当前编辑的画面放大25%

  缩小:  

将当前编辑的画面缩小25%

  下一层画面:

编辑下一层画面。画面共有八个层次,从第二层开始,每一层都

与前一层具有一定比例关系,当编辑下一层时,前面层的图元将按比例放大后与这一层图元同时显示。在线运行时放大即多显示画面的一个层,该功能用来显示详细程度不同的画面。

  上一层画面:

编辑上一层画面。画面共有八个层次,从第二层开始,每一层都与前一层具有一定比例关系,当编辑前一层时,最后一层将关闭,前面层的图元将按比例缩小显示。在线运行时缩小即少显示画面的一个层,该功能用来显示详细程度不同的画面。

  刷新画面:    

刷新当前画面。

  新窗口:

打开新窗口,新窗口显示的内容与当前编辑窗口相同,即对应同一幅画面,以便用户同时编辑画面的不同部分。

  重叠排列窗口:

以重叠的方式重新排列窗口。

  水平平铺窗口:   

水平方向平铺各窗口。

  垂直平铺窗口:   

垂直方向平铺各窗口。

2.7    文件工具条:对画面的各项操作

  新画面:    

建立一个空白画面。

  打开画面:  

打开一个已经存在的画面。

  保存画面:  

将当前编辑的画面存盘。

  打印:      

将当前编辑的画面送打印机打印。

  打印预览:  

模拟显示画面的打印结果。

  关于编辑器:

显示编辑器的版本、版权等信息。

  帮助:

提供指定的帮助信息。选择功能后,移动光标至需要帮助的目标上点下鼠标左键,即可调出有关的帮助信息。

2.8    状态条:显示状态信息

状态条的左边为信息部分,显示一些提示信息,如工具的功能,菜单项的作用等。信息部分右侧为CTRL键状态窗,当CTRL键处于按下状态时,状态窗显示“CTRL”;然后是SHIFT状态窗,当SHIFT键处于按下状态时,显示“SHIFT”;SHIFT状态窗右侧为当前编辑画面的层,根据当前的所编辑的层显示18;再往右为当前编辑画面的缩放比率,该比率的范围从1400;缩放比率的右侧为当前光标位置的水平、垂直坐标。

2.9    属性窗:显示、修改图元属性

属性窗用来显示和修改画面上图元的各个参数。从工具条菜单中选取“属性窗”菜单项或在画面上双击鼠标左键都可以打开属性窗。当前被选中图元的属性显示在属性窗中。对于所有的背景图元只有普通属性;对于画面,除普通属性外还有打印属性:对于模拟量、数字量、脉冲量、历史量,除普通属性外还有数据属性。以下分别介绍各图元属性。

2.9.1   画面普通属性:

名称:            

显示当前画面名称。

父画面:        

在由画面组成的树形结构中,该画面的上一级画面。

根画面:        

当前画面是否为根画面。根画面是在线系统启动后自动调入的第一幅画面,系统中只有一幅根画面。

宽度:           

当前画面的宽度

高度:           

当前画面的高度。

自动计算:    

由系统自动计算画面宽度和高度,画面大小对画面的打印输出及在线时画面的滚动范围有影响。

弹出条件:

                        该对话框中类型与属性相对应,如类型为遥测量,则属性的下拉菜单中会出现:工程值、日最大值、日最小值、日平均值、月最大值、月最小值、月平均值、日正常时间、日越下限时间、日越上限时间、月正常时间、月越下限时间、月越上限时间、日合格率、月合格率。如类型为遥信量,则属性的下拉菜单中会出现:工程值、正常变位次数、事故变位次数;如类型为电度量,则属性的下拉菜单中会出现:原始值、工程值、分钟电量、小时电量、日峰电量、日谷电量、日平电量、日总电量、月峰电量、月谷电量、月平电量、月总电量。

用户定义弹出条件,如:事故推画面的弹出条件是事故总信号变为1时,推出事故画面。

2.9.2   画面打印属性

自动打印:     

当前画面是否定时自动打印,自动打印一般用于报表。

打印时间:    

如果画面需定时打印昨天历史报表,填写打印时间时,对打印周期以上的域填写 1,例如:对于日报表,可定于每天七点打印,将“年”、“月”、“日”填写 1,“时”“分”填写70分;对于月报表,如定于每月19点打印,则将“年”“月”域填写-1,后面填写190分即可。

如果画面需定时打印今天的历史报表,对打印周期以上的域填写0即可。

类型:          

选择画面类型。

2.9.3   线图元属性

起始点 XY    

直线的起始点坐标。

终止点 XY    

直线的终止点坐标。

效果:                  

线图元的显示方式:正常、凸起或凹陷。

颜色:                  

在调色板对话框中选择直线图元的颜色。

线型:                  

在线型对话框中选择直线图元的线型、线宽。

2.9.4   矩形图元属性

左上角XY     

矩形图元左上角的位置坐标。

宽度:                  

矩形图元的宽度

高度:                  

矩形图元的高度。

效果:                  

矩形图元的显示方式:正常、凸起或凹陷。

颜色:                  

在调色板对话框中选择矩形图元的颜色。

线型:                  

在线型对话框中选择矩形图元的线型、线宽。

形状:                   

选择矩行图元的形状普通,圆角。

2.9.5   椭圆图元属性

圆心XY       

椭圆图元的圆心的坐标。

长轴和短轴:     

椭圆图元的两个轴的长度,两个轴相等时为正圆。

效果:                 

椭圆图元的显示方式:正常、凸起或凹陷。

颜色:                 

在调色板对话框中选择椭圆图元的颜色。

线型:                 

在线型对话框中选择椭圆图元的线型、线宽。

2.9.6   多边形图元属性

效果:

多边形图元的显示方式:正常、凸起或凹陷。

颜色:

在调色板对话框中选择多边形图元的颜色。

线型:           

在线型对话框中选择多边形图元的线型、线宽。

2.9.7   弧和扇形图元属性

圆心XY

弧图元的圆心的坐标。

长轴和短轴:

弧图元的两个轴的长度,两个轴相等时为正圆弧。

起始角和终止角:

弧图元的起始角度和终止角度,该角度是相对于水平方向的逆时针角度。

效果:

弧图元的显示方式:正常、凸起或凹陷。

颜色:

在调色板对话框中选择弧图元的颜色。

线型:

在线型对话框中选择弧图元的线型、线宽。

2.9.8   字符串图元属性    

左上角XY  

字符串图元左上角的位置坐标。

宽度:               

字符串图元的宽度。

高度:               

字符串图元的高度,字符串图元的宽度和高度决定了字符串显示的区域,如果字符串显示超出区域,显示内容被裁掉,使用编辑工具条中的调整字符串大小工具可以使字符串大小工具可以使字符的宽度和高度与字符串内容相符合。

字符串:           

字符串图元的内容。

字体:               

选择显示字符串图元所用的字体。

效果:               

字符串图元的显示方式:正常、凸起或凹陷。

颜色:               

在调色板对话框中选择字符串图元的颜色。

2.9.9   矢量字符串图元属性

左上角XY     

矢量字符串图元左上角的位置坐标。

宽度:                  

矢量字符串图元的宽度。

高度:                  

矢量字符串图元的高度。

字符串:              

矢量字符串图元的内容。

字体:                  

选择显示矢量字符串图元所用的字体。

颜色:                  

在调色板对话框中选择字符的填充颜色。

2.9.10 图符图元属性

左上角XY     

图符图元左上角的位置坐标。

宽度:                  

图符图元的边长,图符图元为一个正方形的图元,因此,宽度与高度相同。

角度:           

图符图元旋转的角度,角度是相对于水平方向逆时针旋转的角

度。

效果:           

图符图元的显示方式:正常、凸起或凹陷。

颜色:            

在调色板对话框中选择图符图元的颜色。

线型:           

在线型对话框中选择图符图元的线型、线宽。

图符:           

在图符选择对话框中选择显示哪一个预制的图符。

2.9.11      位图图元属性

左上角XY     

位图图元左上角的位置坐标。

宽度:                  

位图图元的宽度。

高度:                  

位图图元的高度。

2.9.12 模拟量图元普通属性

左上角XY     

模拟量图元左上角的位置坐标。

宽度:                  

模拟量图元的宽度。

高度:                  

模拟量图元的高度。

显示:                      

选择显示方式,模拟量图元显示方式有四种:数字方式,直接显示模拟量的值;电压棒图方式,以伸缩的棒图表示模拟量的变化;母线方式,当模拟量处于正常值范围时,以正常颜色显示一条直线,当模拟量值超出正常值范围时,直线变色;潮流方式,根据模拟量值的正负确定动态直线的方向。

格式:                      

当模拟量图元以数字方式显示,确定模拟量的小数位数,可选03位小数。

方向:                      

当模拟量图元以电压棒图方式显示,确定棒图为竖直方向还水平方向伸缩。

最大值和最小值:  

当模拟量图元以电压棒图方式显示,确定棒图最大值和最小值。

正方向:                  

当模拟量图元以潮流方式显示,确定当模拟量值大于0时,动态直线的方向。

字体:                      

当模拟量图元以数字方式显示,确定显示数字所用的字体。

颜色:                      

在调色板对话框中选择模拟量图元的颜色,当模拟量值处于正常

范围时,用该颜色显示,如果值越限,使用报警颜色。

2.9.13 模拟量图元数据属性

站名和点名:      

当模拟量图元为实时数据,则定义相应实时数据的站、点名称。

属性:               

选择该点的属性。

公式:

计算模拟量的值(如总有功等)。选中公式后,公式定义按钮变为可用,单击公式定义按钮,得到如下对话框:

在公式定义对话框中定义模拟量的计算公式。公式项可以是实时数据也可以是常数,运算符除四则运算:+-*/ 外,还有比较运算:><=<=>=!=和逻辑运算:AndOrNot,另外还提供了几个系统函数:MaxMinAvex^y(xy次方)。公式中可以含有括号,括号可嵌套使用。公式定义对话框类似于计算

器,公式显示在上方的窗口中,可以使用鼠标选择输入,也可以使用键盘直接键入。如上图所示,用鼠标选择站“Station4”,然后选择类型“遥测量”,再选择属性“工程值”,在点列表框中选择“141线路P”,公式中出现该实时数据公式项,并以 [] 括起。公式编辑完成后,按“OK”键返回。

关于公式的详细计算方法见《系统数据生成》操作说明第三章。

2.9.14 数字量图元普通属性

左上角XY      

数字量图元左上角的位置坐标。

宽度:                  

数字量图元的宽度。

高度:                  

数字量图元的高度,当数字量图元以图符方式显示,宽度与高度相等,该属性省略。

显示:                  

选择显示方式,数字量图元显示方式有三种:图符方式,用四个图符代表数字量的各种状态,普通遥信使用两个符号,第一个代表状态0,第二个代表状态1,如果是双遥信号,则四个图符代表四个状态;字符串方式,定义四个字符串来表示数字量的各种状态,普通遥信使用前两个字符串,双遥则使用四个;数字方式,直接显示数字量的值。

图符定义:           

当数字量图元以图符方式显示,确定使用的四个图符,点中相应图符,弹出图符选择对话框来修改图符定义。

字符串:               

当数字量图元以字符串方式显示,确定使用的四个字符串,四个字符串之间使用逗号,如“开,合,正常,故障”。注:字符串中的逗号为西文的标点。

线型:                  

当数字量图元以图符方式显示,在线型对话框中选择数字量图元的线型、线宽。

颜色:            

在调色板对话框中选择数字量图元的颜色,当数字量值处于正常状态时,用该颜色显示,如果发生变位,处于非正常状态,使用报警颜色。

2.9.15      字量图元数据属性

站名和点名:     

当数字量图元为实时数据,则定义相应实时数据的站、点名称。

属性:           

选择该点的属性。

公式:

由公式定义数字量的数据属性,定义方式同模拟量的定义。

2.9.16      脉冲量图元普通属性

左上角XY     

脉冲量图元左上角的位置坐标。

宽度:           

脉冲量图元的宽度。

高度:           

脉冲量图元的高度。

格式:           

脉冲量图元的小数位数,可选03位小数。

字体:           

确定显示脉冲量图元所用的字体。

颜色:           

在调色板对话框中选择脉冲量图元的颜色,当脉冲量值处于正常

范围时,用该颜色显示,如果值越限,使用报警颜色。

2.9.17 脉冲量图元数据属性

站名和点名:     

如果脉冲量图元的值是实时数据,则定义相应实时数据的站、点

名称。

属性:           

选择该点的属性。

公式:

由公式定义脉冲量的数据属性,定义方式同模拟量的定义。

2.9.18      历史量图元普通属性

左上角XY     

历史量图元左上角的位置坐标。

宽度:           

历史量图元的宽度。

高度:           

历史量图元的高度。

格式:           

历史量图元的小数位数,可选03位小数。

字体:           

确定显示历史量图元所用的字体。

颜色:          

在调色板对话框中选择历史量图元的颜色。

2.9.19      历史量图元数据属性

站名:     

如果是从历史库中获取值,则定义相应站名称。

类型和属性:    

定义该点的类型和属性。

点名:

定义相应点名称。

时间:           

如果是从历史库中获得的值,则定义历史库中哪一个时刻的值。如果要获得上一周期的值,则大于周期的时间域填写$,例如:对于日报表,取昨日7时的值,将“年”、“月”填$ “日”填$-1,“时”“分”填写70分;对于月报表,取上月70时的值,则将“年”填$ “月”填写$-1,后面填写700即可。

历史量时间:     

如果选中,则从历史库中取得的不是历史量的值,而是保存该值的时间。

公式:

由公式定义历史量的数据属性,定义方式同模拟量的定义。

2.9.20      操作图元数据属性

左上角XY    

操作图元左上角的位置坐标。

宽度:           

操作图元的宽度。

高度:           

操作图元的高度。

操作:           

操作图元代表的动作有六种:调画面,在线运行时在操作点上点下鼠标左键将更换当前的画面;当前时间,显示当前的时间,显示格式为年、月、日、时、分;报表时间,如当前画面是报表,则显示报表中历史数据的时间;档位计算、遥控、用户自定义。

画面:

当操作为调画面时,选择调出的画面。

2.9.21 操作图元数据属性

2.9.22 操作图元数据属性

2.9.23 用户自定义图元属性

左上角XY    

用户自定义点左上角的位置坐标。

宽度:           

             用户自定义点的宽度。

高度:           

             用户自定义点的高度。

U用户自定义属性:  

             调入用户模块,定义用户自定义操作点的属性。关于自定义

点属性的定义参见《用户定义图元索引》说明书。

 

 

 

 

 

 

 

 

 

第三章  菜单

3.1    菜单简介

进入界面编辑器系统时,初始画面中,系统只有“文件”、“工具条”、“帮助” 三个菜单项。

当打开一幅画面时,系统显示所有菜单项。菜单项也有其适用范围,当不适用时,菜单项及其对应的工具都变成灰色,例如打开图符进行编辑时,于画面编辑无关的菜单项都以灰色显示(为不可用)。系统中除了固定在菜单条上的菜单外,还有浮动菜单,在工具条上点下鼠标右键、在画面中图元或背景上点下鼠标右键,将弹出不同的浮动菜单。

    本章除了介绍菜单外还要介绍快捷键的使用方法。其中一部分菜单项对应有快捷键,使用快捷键可以免去打开菜单后选取菜单项的两步操作,而通过键盘一次按键完成操作,加快作图速度。

3.2    文件菜单

N新画面:        

编辑一幅新画面。系统打开一个新的窗口  ,画 面的底色为当前底色,画面的名称为“新画面”。

M新图符:       

编辑一个新的图符,新图符位于图符列表的最后。

O打开画面:     

打开编辑好的画面。选择该菜单项将出现下面的对话框:

 对话框左边列出了所有可以编辑的画面,右边为选中的画面,用鼠标在左边列表框中选择画面,然后按下8按钮或双击鼠标左键将画面选到右边的列表框中,单击OK,即可打开选中的画面。要打开全部画面则按下88键,单击OK,打开所有画面。如果要将选中的画面移回到左边列表框中,则用鼠标左键双击该画面或选择画面后按下3键。按下33键可以将右边列表框中的所有画面,移回到左边列表框中。

B打开图符:     

打开一个编辑好的图符。选择该菜单项将出现下面的对话框:选择对话框中列出了所有已编辑好的图符,用鼠标左键点中要打开的图符,图符变为反显,按下OK按钮即可选中图符,按下取消按钮本次操作。

C关闭画面:      

关闭当前正在编辑的画面。如果当前画面已经被修改,系统将提示是否保存该画面。

S保存画面:      

将当前编辑画面存盘。如果是新画面,系统将提示给画面命名。

A保存画面为:   

将当前画面换名保存,系统提示给画面以新的名称,该功能可以拷贝已经编辑好的画面。

D删除画面:      

系统弹出与“打开画面”类似的对话框,将要删除的画面选到右边的列表中“提示”表示是否在删除每一画面时都要提示用户确认。每删除一个画面前,系统都要提示用户是否要删除该画面,因此用户有机会改变决定,取消操作。

E定义曲线      

按用户要求定义曲线。选择该菜单项,打开下面的窗口:

在曲线对话框中可以增加新曲线、修改和删除,已经定义好的曲线;单击增加或修改,系统弹出下面的对话框:

名称:           

定义曲线名称。

单位:           

定义历史量的单位。

个数:             

定义在同一幅画面中曲线的数量,最多可定义 8条曲线。

最大值:           

曲线的最大值。

最小值:           

曲线的最小值。

站名:             

单击 选择变电站站名

类型             

单击 ,选择点类型。

点名             

单击 ,选择点名。

属性             

单击 ,选择属性。

曲线颜色       

选择曲线的颜色。

上一条曲线     

定义上一条曲线。

下一条曲线     

定义下一条曲线。

I转换画面:      

转换画面含有两种功能:

一、将其他目录下的画面文件拷贝到系统的画面库