组态王kindview 控件 xxx 创建控件错误的解决

warning: 这篇文章距离上次修改已过316天,其中的内容可能已经有所变动。

组态王kindview 控件 xxx 创建控件错误的解决

一、故事到事故

最近接手一个PLC程序的二开工作,其中有一个子项目是用组态王采集西门子plc中的各阀门或传感器中的值,并做实时监控。为了不影响现有的系统运行,我们将项目迁移到新的电脑上,原系统用的是win7 32位,新系统为win10 64位,迁移后各种问题就来。首先是用户给的安装包跟旧系统里的版本不一致,导致安装后又要再安装更新的版本。安装新版本后,悲催的事来了,加密狗读不到!

组态王这个加密狗的使用是比较变态的,分运行狗和开发狗,不插入狗,连开发都不给你做。我看了又看,想了又想。N次重复了以下操作:系统重启、加密狗重装、软件重装等等,打开软件后,点运行或开发均没办法识别到狗。无奈只能联系组态王厂商。厂商售后还是比较积极,给我远程看了又看,试了又试,读狗工具也拿过来试了,均读不出。最后跟我说可能狗坏了,需要寄回去检测。听到这个,我感觉很无语,两个加密狗同时坏的可能性太小了吧!

为了印证我的猜想,我穿着厚厚的防护服把狗带到洁净车间里做测试。果然不出我所料,旧系统里是可以读到狗的,而且运行正常,那肯定是新系统的问题了吧!回去的路上,我一路想啊想,突然感觉身体被掏空!因为我想起了当年遇到的读不到银行U盾的事。那一年某个夜晚,我独自在异乡的电脑桌前,正在比较严肃的做一件事--转帐。==在那个1000块对我来说都是巨款的年代,我转帐汇款都要专用的电脑!即使在外地,也通过远程回去,叫家人插入u盾,然后才能转帐。== 但是,那一晚令我今生难忘!家人帮我插入U盾后,我远程看到有显示了,xx助手也显示有读到证书,但是付款时却显示要插入u盾。当时折腾了好久,最后断开远程,叫家人直接操作汇款,竟然很顺利的成功了!这才恍然想起远程环境可能读不了加密狗!刚好新电脑没接显示器,都是远程过去操作,应该就是这个问题了!回去后,果断接上显示器,直接运行组态王,一路顺利的点开运行及开发界面,那一刻心情高兴极了,好像中了几百万彩票一样!

二、正文

前面好多废话,都没到本次主题。打开运行界面,查询记录数据,感觉非常卡顿,很久都没显示出数据!等了好久好久,终于不卡了,操作也顺畅了。看了一下运行日志,需面一大堆报错!这不科学啊,整个项目都是直接拷过来的,怎么还会少控件?组态王本身的控件难道有问题?

image-20230628163812741

全局搜索,没找到名叫sdxx的控件,也没找到edxx的控件,只好再次找厂家售后。售后回复说要在设计画面的工具箱里,找到插入控件,看上面有没缺失的控件没注册。但是售后也说不出来在哪找到这个控件到底是在哪引用的,按照开发winform套路来看,如果某个控件没注册,打开设计界面时直接就会报错,这里显然没按套路出牌啊!

没办法,只能再跑一趟车间,在旧系统里随便一个画面,点插入控件,很明显有两个控件是放到了桌面上!但又细看了一下,这两个控件Calendar.ocx和Time.ocx不是很普通的日期和时间控件吗? 组态王不会连这基本的控件都没有吧!

image-20230628164536221

把上面提到的两个控件拷回去,放到新系统里,regsvr32 注册,提示加载失败,模块xxx已加载,但找不到入口点DllRegisterServer。这种情况有可能是32位的ocx在64位系统里注册。把ocx放到syswow64里,在syswow64文件夹上开cmd(这一步很重要!),然后再regsvr32 Time.ocx,另一个也是一样操作。这回是注册成功了,重新打开组态王,终于能正常显示数据记录,信息界面也再出现报错了!

但是卡顿问题还是没解决呢,于是查了下数据库,竟然然用的是access,文件都去到2G了。这么大的数据量,能不慢吗? 打开数据库,点压缩数据库,文件一下降到了200M左右。再次打开组态王查数据,虽然不是飞一般的秒开感觉,但是查一整年的数据,3秒左右就能查询完成了,收工!

none
最后修改于:2023年06月28日 17:13

评论已关闭