发表于:2004/6/28 0:08:00
#0楼
以下是从转载的一篇文章,里面的一些问题好像6.5也没有解决。。
组态王十宗罪
在下以前从未用过组态王,最近由于偶然的机遇,接手别人留下的半拉子工程,有幸真正接触并使用了一次组态王软件,想组态王被业界誉为最好的国产组态软件,所以开始使用时还是充满信心的,但未想到,几个回合下来,大失所望,故总结了软件使用过程中的若干问题,发表出来,供各位同仁共同讨论,更希望亚控公司的技术开发人员,能够亲自了解这些问题,并给出适当的解答。如不幸被言中确实存在的问题,也希望在以后的升级过程中加以完善和改进。
1、关于画面编辑器
请问画面编辑器窗口的最小化按钮和关闭按钮有什么区别啊?依我看,好像是完全一样的功能,就是最小化而已。从这里,其实我想说的是,退出画面编辑器真的好难!即便是用菜单命令的“退出”,最终其实也并未退出,而是被最小化了。
看组态王软件很多地方和intouch很相似,难道,这个坏习性也是跟INTOUCH学来的?既然开发基于WINDOWS的软件,就要遵从WINDOWS软件的使用风格吧,总不能自己随便修改风格,然后却美其名曰符合中国人的使用习惯?
其实按照多文档文本的风格设计,想来也不是多难,包括存盘命令,也不能一键完成,总要多一些另外的操作。真是麻烦!
要说因为多文件保存的缘故,整个组态王资源管理器退出的时候,倒也能逐一跳出提示框,对被修改的画面要求保存,还不是一样。(这是唯一的能够真正退出画面编辑器的方法,怪怪!)
2、组态王的文件类型
画面的文件,定义为*.PIC,无话可说。但备份文件,叫做什么*.111,什么玩艺?真是不敢苟同了。从这一点上看,根本不像一个正式软件,倒是很像一个大学生的编程作业,编程时候文件类型随便定义为111,222,123就行了,程序能运行就行。所以从这里来看,我宁愿称组态王为一个程序,而不愿称之为软件了,对设计开发者,我也觉得和我等差不多的编程者而已。
正式的软件,总要将文件的类型定义到系统注册表中,至少作为一个占用的声明,即便这个文件并不是一个文档文件,没有可绑定的程序将其打开。当然,这个声明也不能太滥,像超级解霸,将大概相关和不相关的类型都强行定义到自己名下,比如*.VBS等等也不嫌弃,并为之绑上自己的播放程序,倒是非常令人讨厌了。
3、画面内控件的属性设计
按照一般的使用习惯,一个控件或者对象,鼠标点中之后跳出的快捷菜单,最后一项一般来说是属性,选择属性命令,根据这个对象的特性,会跳出与之相关的系列属性设置对话窗口,文字,按钮,图像,线段各不相同。但一些通用的属性,如在画面之中的位置,前景、背景颜色等等,大致在同样的界面中出现。
但咱们组态王?完全不是,最优先跳出的,不是这个对象,而是所在画面的属性页。不管点中的是画面还是画面之中的控件。搞不懂。画面的属性就那么重要吗?那么需要随时更改吗?
反倒各种控件,修改的方法千差万别,但就不能统一,比如文字,内容的修改有字符串替换的专用命令,但其他,如颜色,字体、字号等等,则只有从工具箱的快捷工具之中才能找到。快捷工具能实现一些功能,固然欣慰,但我认为,一个功能的实现,不应当只有一个渠道,而是很多渠道实现,软件才叫完善。比如autocad,要画一个圆,就有很多方法实现这个命令,不是吗?
4、按钮、指示灯等控件
对于普通的画面对象,比如自己画的一个圆,它的背景色可以绑定到i/o的bool变量,根据逻辑状态的不同,可以显示不同的状态。但指示灯等标准控件,则不可以!要对指示灯控件选择绑定变量的时候,鬼使神差的只能选择“内存离散”,而不能选择“i/o离散”类型的变量。那些变量给屏蔽过滤掉了!变量不能显示外面世界的状态,还有什么用啊?难道非要在系统里面编程转化才行?但内存变量还不是一样要算在许可点数之内。况且自定义对象完全可以,所以我看还是定义为bug最容易理解。
另外,组合对象不能编程,我认为是很大的垢病,如果我这个组合对象,要针对现场的某个变量的不同状态,表现不同的状态,比如位置、颜色、隐藏等等,那么还非要每个对象逐一修改才行?当然,这在程序设计上存在难度,不容易实现,可以理解。
5、一些自说自话的功能
一些功能,貌似看起来很体贴的,但有的时候却未必准确,反倒成为拦路虎。比如变量定义之中的线性变换,不管希望与否,一概变换,如果没有加以注意,超出了变换范围之外,比如现场出现了负数,而却省定义变换范围的下限为0,那么系统就不认识!
大哥!我不想变换,我只想如实得到现场的实际值,可以吗?
还有,变量输入的对话框,非要给一个上下限的范围,我不想要,可以吗?拜托!
另外,这个软键盘的输入对话框,最好位置可以移动啊,把我的画面都挡住啦!有的时候,我想在输入的时候还想参考一下画面运行的其它值啊。
6、控件的x,y位置
在需要实现动画的时候,这两个值是很重要的,但和上一条一样自说自话的毛病,如果你想将一个物体从左边界移出视线之外,静态设计时可以,但动画编程时则绝对不可以!因为系统已经自作主张的认定坐标值不能为负,殊不知,如果一个100x100的矩形,如果只显示一半的话,它这时的x坐标位-50!
7、变量名称更换
这个功能,说来算是不错的,将变量名字修改之后,项目中所有引用到此变量的画面和程序,变量名称同样随之更改。但可惜用户界面不友好,或者说根本没有考虑到用户怎么使用!
按照通常的使用习惯,画面中应首先显示变量本来的名字,然后才是要修改的目标值,光标停留在这个文本框之中。善意的功能,可能认为目标名字总要和旧名字类似,所以可以将原名字copy一份,并却省全部文字选择,供使用者在此基础上修改或者完全替换。
而现在的情况呢?我都伤心的不想描述了。有兴趣的自己使用试试!我曾经想将一批变量的名字前面均添加一个A#的前缀,天知道我做的时候多么伤心和失望!对这部分功能的设计者。
或许会有个把高人建议我导出为CSV之后修改,STOP!还不如一个一个地改成功的可能性大哩。
顺便提一下,系统的变量使用交叉索引,功能不够强大!搜索到在某一个画面中使用,但不能指明引用的空间的性质,却只能大致的指向一个位置方位,和算命的差不多!
除了变量的交叉索引,画面的交叉索引也比较现实!
8、ODBC功能
说实话,组态王对数据的处理大量使用了ODBC,而且是完全离不开的,但是这带来的毛病就是,项目程序的可移植性差,一旦用户计算机系统崩溃,恐怕除了原设计者,没有几个人能完成恢复,特别是仅仅依靠使用单位的维修人员,太困难了!
所以,既然使用ODBC,就要有功能,在系统开始运行时,有方法判断系统DSN是否已经存在,未存在,则自动给予建立。
初次接触,研究数天,未找到解决的方法。
9、DLL功能
其实是上一问题的延续,既然系统没有提供功能,则可以自己调用相关DLL程序实现吧?
可惜,搜索所有HELP文档,唯一与DLL相关的条目也是在讲其它的问题。
该不会有人建议用shell+rundll32+dll文件的方式吧?
另:VBA和VBS编程语言支持是现今非常流行的,组态王,努力啊!
10、系统函数的返回值
不管组态王的脚本编程语言是类似C多一些,还是类似BASIC多一些,但系统提供的那些函数,其原型的描述却不甚准确,尤其是个函数的返回值的类型,大多不讲的,所以函数调用的情况,成功与否,很难得知。
比如用户登陆的LogOn()函数和选择配方RecipeSelect()函数,运行是有模式对话框的,但如何知道最终用户是选择了确定还是取消呢?
注:
本人接触并使用的组态王版本为6.02,听闻又出了新版软件,想,如果上面的问题在新版中如果已不再,则当欣喜过望矣!或有侠客高人,能给出现有条件下的应对方案,也必将重谢之。
著此文,完全从技术探讨的角度出发,无有对任何个人和公司诽谤和打击之意,如有个别词语过于激烈,使您受到不应当的伤害的话,请及时通知本人!
组态王十宗罪
在下以前从未用过组态王,最近由于偶然的机遇,接手别人留下的半拉子工程,有幸真正接触并使用了一次组态王软件,想组态王被业界誉为最好的国产组态软件,所以开始使用时还是充满信心的,但未想到,几个回合下来,大失所望,故总结了软件使用过程中的若干问题,发表出来,供各位同仁共同讨论,更希望亚控公司的技术开发人员,能够亲自了解这些问题,并给出适当的解答。如不幸被言中确实存在的问题,也希望在以后的升级过程中加以完善和改进。
1、关于画面编辑器
请问画面编辑器窗口的最小化按钮和关闭按钮有什么区别啊?依我看,好像是完全一样的功能,就是最小化而已。从这里,其实我想说的是,退出画面编辑器真的好难!即便是用菜单命令的“退出”,最终其实也并未退出,而是被最小化了。
看组态王软件很多地方和intouch很相似,难道,这个坏习性也是跟INTOUCH学来的?既然开发基于WINDOWS的软件,就要遵从WINDOWS软件的使用风格吧,总不能自己随便修改风格,然后却美其名曰符合中国人的使用习惯?
其实按照多文档文本的风格设计,想来也不是多难,包括存盘命令,也不能一键完成,总要多一些另外的操作。真是麻烦!
要说因为多文件保存的缘故,整个组态王资源管理器退出的时候,倒也能逐一跳出提示框,对被修改的画面要求保存,还不是一样。(这是唯一的能够真正退出画面编辑器的方法,怪怪!)
2、组态王的文件类型
画面的文件,定义为*.PIC,无话可说。但备份文件,叫做什么*.111,什么玩艺?真是不敢苟同了。从这一点上看,根本不像一个正式软件,倒是很像一个大学生的编程作业,编程时候文件类型随便定义为111,222,123就行了,程序能运行就行。所以从这里来看,我宁愿称组态王为一个程序,而不愿称之为软件了,对设计开发者,我也觉得和我等差不多的编程者而已。
正式的软件,总要将文件的类型定义到系统注册表中,至少作为一个占用的声明,即便这个文件并不是一个文档文件,没有可绑定的程序将其打开。当然,这个声明也不能太滥,像超级解霸,将大概相关和不相关的类型都强行定义到自己名下,比如*.VBS等等也不嫌弃,并为之绑上自己的播放程序,倒是非常令人讨厌了。
3、画面内控件的属性设计
按照一般的使用习惯,一个控件或者对象,鼠标点中之后跳出的快捷菜单,最后一项一般来说是属性,选择属性命令,根据这个对象的特性,会跳出与之相关的系列属性设置对话窗口,文字,按钮,图像,线段各不相同。但一些通用的属性,如在画面之中的位置,前景、背景颜色等等,大致在同样的界面中出现。
但咱们组态王?完全不是,最优先跳出的,不是这个对象,而是所在画面的属性页。不管点中的是画面还是画面之中的控件。搞不懂。画面的属性就那么重要吗?那么需要随时更改吗?
反倒各种控件,修改的方法千差万别,但就不能统一,比如文字,内容的修改有字符串替换的专用命令,但其他,如颜色,字体、字号等等,则只有从工具箱的快捷工具之中才能找到。快捷工具能实现一些功能,固然欣慰,但我认为,一个功能的实现,不应当只有一个渠道,而是很多渠道实现,软件才叫完善。比如autocad,要画一个圆,就有很多方法实现这个命令,不是吗?
4、按钮、指示灯等控件
对于普通的画面对象,比如自己画的一个圆,它的背景色可以绑定到i/o的bool变量,根据逻辑状态的不同,可以显示不同的状态。但指示灯等标准控件,则不可以!要对指示灯控件选择绑定变量的时候,鬼使神差的只能选择“内存离散”,而不能选择“i/o离散”类型的变量。那些变量给屏蔽过滤掉了!变量不能显示外面世界的状态,还有什么用啊?难道非要在系统里面编程转化才行?但内存变量还不是一样要算在许可点数之内。况且自定义对象完全可以,所以我看还是定义为bug最容易理解。
另外,组合对象不能编程,我认为是很大的垢病,如果我这个组合对象,要针对现场的某个变量的不同状态,表现不同的状态,比如位置、颜色、隐藏等等,那么还非要每个对象逐一修改才行?当然,这在程序设计上存在难度,不容易实现,可以理解。
5、一些自说自话的功能
一些功能,貌似看起来很体贴的,但有的时候却未必准确,反倒成为拦路虎。比如变量定义之中的线性变换,不管希望与否,一概变换,如果没有加以注意,超出了变换范围之外,比如现场出现了负数,而却省定义变换范围的下限为0,那么系统就不认识!
大哥!我不想变换,我只想如实得到现场的实际值,可以吗?
还有,变量输入的对话框,非要给一个上下限的范围,我不想要,可以吗?拜托!
另外,这个软键盘的输入对话框,最好位置可以移动啊,把我的画面都挡住啦!有的时候,我想在输入的时候还想参考一下画面运行的其它值啊。
6、控件的x,y位置
在需要实现动画的时候,这两个值是很重要的,但和上一条一样自说自话的毛病,如果你想将一个物体从左边界移出视线之外,静态设计时可以,但动画编程时则绝对不可以!因为系统已经自作主张的认定坐标值不能为负,殊不知,如果一个100x100的矩形,如果只显示一半的话,它这时的x坐标位-50!
7、变量名称更换
这个功能,说来算是不错的,将变量名字修改之后,项目中所有引用到此变量的画面和程序,变量名称同样随之更改。但可惜用户界面不友好,或者说根本没有考虑到用户怎么使用!
按照通常的使用习惯,画面中应首先显示变量本来的名字,然后才是要修改的目标值,光标停留在这个文本框之中。善意的功能,可能认为目标名字总要和旧名字类似,所以可以将原名字copy一份,并却省全部文字选择,供使用者在此基础上修改或者完全替换。
而现在的情况呢?我都伤心的不想描述了。有兴趣的自己使用试试!我曾经想将一批变量的名字前面均添加一个A#的前缀,天知道我做的时候多么伤心和失望!对这部分功能的设计者。
或许会有个把高人建议我导出为CSV之后修改,STOP!还不如一个一个地改成功的可能性大哩。
顺便提一下,系统的变量使用交叉索引,功能不够强大!搜索到在某一个画面中使用,但不能指明引用的空间的性质,却只能大致的指向一个位置方位,和算命的差不多!
除了变量的交叉索引,画面的交叉索引也比较现实!
8、ODBC功能
说实话,组态王对数据的处理大量使用了ODBC,而且是完全离不开的,但是这带来的毛病就是,项目程序的可移植性差,一旦用户计算机系统崩溃,恐怕除了原设计者,没有几个人能完成恢复,特别是仅仅依靠使用单位的维修人员,太困难了!
所以,既然使用ODBC,就要有功能,在系统开始运行时,有方法判断系统DSN是否已经存在,未存在,则自动给予建立。
初次接触,研究数天,未找到解决的方法。
9、DLL功能
其实是上一问题的延续,既然系统没有提供功能,则可以自己调用相关DLL程序实现吧?
可惜,搜索所有HELP文档,唯一与DLL相关的条目也是在讲其它的问题。
该不会有人建议用shell+rundll32+dll文件的方式吧?
另:VBA和VBS编程语言支持是现今非常流行的,组态王,努力啊!
10、系统函数的返回值
不管组态王的脚本编程语言是类似C多一些,还是类似BASIC多一些,但系统提供的那些函数,其原型的描述却不甚准确,尤其是个函数的返回值的类型,大多不讲的,所以函数调用的情况,成功与否,很难得知。
比如用户登陆的LogOn()函数和选择配方RecipeSelect()函数,运行是有模式对话框的,但如何知道最终用户是选择了确定还是取消呢?
注:
本人接触并使用的组态王版本为6.02,听闻又出了新版软件,想,如果上面的问题在新版中如果已不再,则当欣喜过望矣!或有侠客高人,能给出现有条件下的应对方案,也必将重谢之。
著此文,完全从技术探讨的角度出发,无有对任何个人和公司诽谤和打击之意,如有个别词语过于激烈,使您受到不应当的伤害的话,请及时通知本人!