彩票走势图

BCGControlBar & TeeChart案例:数据采集测试系统

原创|其它|编辑:龚雪|2014-06-05 14:42:25.000|阅读 1649 次

概述:本系统中所使用的控件主要为BCGControlBar Pro和TeeChart Pro v2013 ActiveX

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

使用控件

本系统中所使用的控件主要为BCGControlBar ProTeeChart Pro v2013 ActiveX

企业及项目介绍

西安创元一九九四年,一九九八年更名为西安市创元电器科技有限责任公司。专注于开发高、低压电器试验站数据采集处理系统及提供技术咨询。CY3000数据采集处理系统广泛使用在我国高、低压电器试验站。经过十余年磨练及经验累积, 最新推出的CY3000D,其性能已达国际先进水平,运行稳定,测试精准,抗干扰能力强。

CY3000D数据采集测试系统是对已有系统的升级,除了需要保持原有系统的优势之外,还需要增加新功能,提供更人性化的操作方式和功能,从而带给用户更好的体验。

选择该控件的原因

BCGControlBar是俄罗斯著名的软件开发公司BCGSOFT的优秀产品,它是全球最早最优秀的MFC界面类库,功能强大,显示丰富,在国际上享有盛誉,并屡次获奖,是VC界面设计的必备首选。开发者可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Microsoft Visual Studio.NET的应用程序(用户工具栏、菜单、键盘等等)。BCGControlBar库包含了大约150多个经过精心设计,测试和具有完备文档的MFC扩展类,这些都可以很容易的应用于需要开发的应用程序,节省大量的开发和调试时间。

Steema是全球领先的图表类控件公司,它的VCL图表报表控件在全球拥有极高知名度。我们公司以前的系统(CY2008、CY2009)就是用它的VCL控件构建的,因此对它的使用上有一定的技术积累。但是,由于界面部分决定采用BCGControlBar进行开发,而BCGControlBar本身带有Chart控件,能不能用BCGControlBar本身的Chart来替代TeeChart呢?如果能够替代,在保证系统开发进度的前提下,既省去购买TeeChart的费用,节约了开发成本,又能减少系统对第三方组件的依赖性。为此,需要从以下几个方面进行对比:

二者的显示性能都很高,这一点儿可以从BCGControlBar示例程序BCGPChartExample的Huge Data例子和TeeChart Pro AX v2013 feature demo程序中的FastLine Speed DrawAll例子中可以看出。笔者并没有对加载时间进行具体的测试,但从二者例子的显示速度上已经能够感觉出二者性能都能够满足系统的要求。

由于行业的特殊要求,我们系统要求所采集的数据要能够进行多通道显示,每个通道都有独立的Y坐标轴(包括Y轴标题)和一个共同的X坐标轴,通道之间要求无缝排列,通道连接处的Y轴标签显示需要自定义格式显示,并且要能够高亮显示当前鼠标点击的通道。如图(1)所示:

 
图(1) 多通道无缝显示

对于这个需求来讲,BCGControlBar和TeeChart都没有直接的解决方案可以用,他们虽然都有多坐标轴功能,如图(2)、图(3)所示:

图(2) BCGControlBar的多坐标轴                    图(3) TeeChart的多坐标轴

但是,它们都满足不了系统对通道连接处无缝的要求,需要我们在此基础上另行开发实现。它们都提供了自定义坐标轴标签的功能,通过此功能我们可以实现多通道无缝排列时Y坐标轴刻度的自定义显示。对于通道高亮显示,TeeChart有着更简单的方法,它提供了一个ColorBoard工具,能够设置它的颜色和透明度,通过对它的位置进行动态调整来表示当前点击的通道。

我们系统的用户需要对加载的数据进行放大(区域放大和沿X轴放大)查看和分析,有时候需要进行多次放大甚至是无级放大。BCGControlBar内置的缩放功能没有TeeChart丰富,如果要实现区域放大,使用BCGControlBar时,还需要进行单独编码处理,而TeeChart已有此内置功能。

另外,TeeChart还提供其它多种工具,比如DragPoint工具可以用来拖动图表Series、Cursor工具可以添加可以交互的横纵光标等,这些工具与图表的交互不需要再写额外的代码。

总上所述,图表控件我们最终选用了TeeChart。

  • 显示性能
  • 多个通道显示
  • 图表的交互

控件应用情况

创元数据采集系统(CY3000D)的主要功能是通过控制硬件数据采集卡进行数据采集,并对采集的结果进行分析查看,并最终提供试验报告。由于程序功能相对比较多,因此程序界面采用Ribbon风格。界面设计是VC++的弱项,但是BCGControlBar提供了一个Ribbon Designer,用它来设计程序主界面就简单轻松多了。数据采集系统程序主界面如图(4)所示。

 
图(4) 程序主界面

程序整体上可以分为3个主要部分:采集参数设置(包括硬件设置、通道设置、公式设置和显示设置)、数据分析和试验报告。系统将硬件设置、公式设置和通道设置的一些参数传给采集卡,采集卡依据这些参数进行数据采集后传递给采集系统,采集系统将采集到的数据按照显示设置进行显示。

BCGControlBar的CBCGPGridCtrl不论是性能还是功能上,都是相当出色的,它内置了丰富的单元格类型,比如ComboBox、CheckBox、Button、ColorPicker等等(详见BCGPGridExample例子中的Cell Types示例)。使用这些内置的单元格类型,可以很方便地实现通道设置功能,如图(5)所示。

 
图(5) 通道设置界面

然而,在实际开发过程中,这些内置单元格类型还不能完全满足我们的要求,我们需要有一种单元格类型,可以设置更为复杂的参数,于是我们从CBCGPGridItem继承一个我们自定义的单元格类型的类(CGridPopupWndItem),该类有一个成员变量CPopupDialig,在点击单元格事件中动态调整CPopupDialog的位置,就可以实现下拉对话框的效果。如图(6)所示:

  
图(6) 自定义单元格类型:左为通道设置,右为公式设置

有了BCGControlBar这些灵活的扩展机制和丰富的扩展类,可以很便捷地实现硬件设置和显示设置,如图(7)所示:

图(7) 

硬件设置与显示设置

对于采集到的波形数据,要能够对这些波形进行输出打印,输出的对象可以是真实的打印机或者是虚拟打印机,打印的质量要和系统中看到的相一致,特别是打印出的波形不能有锯齿。TeeChart内置打印机对象(Printer),调用它的BeginDoc、PrintChart/PrintPartial以及EndDoc等方法来实现出图打印,但是它会根据打印区域的大小对TeeChart中的数据进行处理,导致最终打印质量不能够满足要求。另外,我们的数据采集系统中除了主显示窗口外,还有一个放大窗口,因此需要对TeeChart的打印功能进行扩展,虽然TeeChart的Printer对象的PrintPartial方法能够解决多窗口多TeeChart同时输出的问题,但是打印质量依然是无法保证的。TeeChart提供了输出为EMF格式文件的功能(EMF是一种矢量文件格式,可以始终保持图形的精度),通过对EMF文件的拼接,最终解决了多窗口中TeeChart输打印的质量问题。效果如图(8)、图(9)所示:

 
图(8) 实际显示效果
 
图(9) 虚拟打印机中的效果

需要注意的是,TeeChart输出EMF格式文件时,字体会显得特别的小,因此,在输出之前需要对先将相关字体变大,等输出完毕后,再将字体大小恢复到原来就可以了。

另外,系统对波形数据进行分析时,需要为波形添加点标注、X方向标注、Y方向标注和斜标注等,而且要能够对点标注、X方向标注以及Y方向的标注能够进行拖动。TeeChart提供了丰富的内置工具,使用Rectangle工具可以绘制标签,使用ArrowSeries可以绘制标注的锚点和锚线,使用DragPoint工具可以实现标注的拖动。图(9)为标注的实际显示效果,高亮色表示当前标注为活动标注。

 
图(9) 标注实际显示效果

CY3000D有两个纵光标分别为主辅光标,除用不同的颜色进行区分之外,另外每个光标的上端还标有数字,这种数字上标的实现途径有多种,比如可以用使用位图图标来实现,也可以使用TeeChart内置的Rectangle工具来动态跟随来实现,但是这两种方案都有一种缺陷,那就是上端的数字标注在光标快速移动时会有延迟,给人一种反应迟钝的感觉,用户体验不好。最后采用的方案是使用TeeChart的Canvas对象直接进行绘制,从这一点儿也可以看出TeeChart的功能强大!

我还想说...

BCGControlBar真不愧为MFC框架下最为优秀的组件之一,通过它极大地提高了系统的开发进度,是MFC框架下的首选。在系统的逐步开发过程中,才发现原来TeeChart的功能是如此强大,感觉它在Chart的表示方面几乎达到了无所不能地步!

另外,在系统开发前期,我们需要对软件(主要是Chart控件)进行调研,主要对控件的功能予以初步的评估,看是否能够满足我们的需求,由于我们对要调研的软件并不是十分的熟悉,有些深层次的问题还得和国外的开发商进行咨询,沟通难而且反馈慢。慧都公司市场部和技术部在这时给予了我们极大的支持和帮助,我们所提出的问题都能及时得到解答。在这里我代表西安创元向慧都公司的曾经给予我们大力支持的市场部和技术部表示衷心的感谢!

声明

本人提交此案例参加慧都第一届案例大赛,并同意本案例内容用于慧都科技和该控件厂商的市场宣传。

案例提交人信息

姓名:梁绍辉

职位:开发工程师

所在企业:西安创元电器科技

 


标签:界面设计BCGControlBarteechart

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP