UCanCode Software

 

产品与方案▼  免费下载  价格与购买▼  技术支持  客户列表  操作视频▼

 

100%开源组态,CAD,建模仿真PLC平台!
 


028-85354645

VX++跨平台工业C++源码库
100%C++, QT, JAVA源码
 产品特点 
  跨平台工控组态源码
  嵌入式Linux组态源码
  跨平台建模仿真源码
E-Form++可视化图形源码库企业版本
100%C++, VB, C#源码
 产品特点 
  HMI &SCADA源码
 PLC组态编程源码
 CAD设计控件源码
 HMI 报表源码
GIS制图源码
电力系统源码
条码账单源码
工作流程源码
煤炭行业源码
仪器仪表源码
报表打印源码
图形建模源码
电子表单源码
Visio制图源码
工业控制源码
BPM业务流程源码
工业监控源码
流程图控制流源码
组织关系图源码
图形编辑器源码
 Win CE组态源码
UML编辑器源码
地图演示源码
建筑平面制图源码
 关于UCanCode
 

工业监控, 仿真, 工业控制, SCADA, 组态, 建模, 自动化管理, HMI控件, VC++源代码组件库2024!


-- 100%源码全开放企业级工控、仿真、监控、组态解决方案!

工业监控,SCADA,自动化管理方面的应用属于一个大类,E-Form++完全采用VC++而开发的高性能组件平台库,内置对这些方面应用的全套解决方案,其设计模式与运行模式的直接内置,以及可直接通过VC++对任何操作进行完全定制和扩展所达到的性能,是任何单独使用脚本做不到的,将为您节省大量的开发时间,此解决方案已经在煤炭,矿山,电力,军工,能源,航空,城市管理等广泛领域得到广泛的应用。解决方案模块安全、稳定、可靠

下载此解决方案


我们提供的这些解决方案并不意味着E-Form++可视化图形组件库只能开发这些方面的应用,事实上E-Form++同任何其他第三方C++组件库一样,包含数百项可以分开独立使用的功能。同QT, MFC等一样,您可以独立决定是否需要E-Form++中的某项功能,一般来讲,只要您需要图形显示、需要流程图、控制图、打印功能、排版功能、仿真、电子地图、电力接线图、表单等等功能,您就可以使用E-Form++组件库,当然有的时候也许您只希望使用E-Form++提供的下拉颜色等控件而不需要绘图功能,那也没问题!

动态图形与实时系统解决方案示例如下图:

 

下面的示例程序是一个非常典型的使用E-Form++可视化图形组件库构建高性能的工业控制的应用案例,下面是使用E-Form++产品开发该应用的步骤:

一、准备工业控制所需的各种元件:

使用E-Form++提供的高品质复合图形设计程序ShapeDesigner设计需要的工控元件,您可以使用E-Form++本身提供大量基础图形来完成复杂元件的设计,如下图:

 

在右边画布中设计好的各种工控复合图形元件可以直接通过鼠标复制粘贴的方式放置到左边的工具盒中,以后再使用的时候直接拖拉出来即可。

二、设计工业控制画面:

通过附随E-Form++产品提供的DiagramEditor,可以为指定的工业控制设计相应的画面,DiagramEditor提供了非常完善而强大的功能,保证能够正确高效的完成各种高品质的工控画面的设计,在设计画面的时候,我们只需要通过鼠标拖拉的方式将步骤一中设计好的现成元件拖入画布中搭建即可,如下图:

 

当我们在采集数据的时候,我们往往需要刷新画布上的各种图元的状态,在DiagramEditor特别为每个元件提供了5个关键字,通过任何一个关键字即可查询到指定元件。如下图的设定:

该设定中我们将最上面的元件的Key Value 1设定为K2。

三、搭建需要的工控程序:

通过E-Form++提供的AppWizard (应用程序创建向导),可以自动产生基于VC++的工控应用程序框架,要装载任何工控画面,只需要先将上面设计好的XDG工控界面文件导入到应用程序中形成XDGRES资源文件,然后调用如下函数即可:

LoadXdgFromResource(IDR_MAIN, _T("XdgRes"), FALSE);

当然,如果是需要装载新的工控界面,也同样可以调用这个函数。

四、实时数据的采集:

可以通过View类的定时器功能,定时采集数据,如果需要更新画面的元件,调用控件本身的UpdateControl即可,当需要同时更新一系列元件的时候,可直接加入到CFODrawShapeList列表中,然后调用UpdateShapes即可。示范代码如下:


void CAutoDemoView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == ID_TIMER_ID)
	{
		CFODrawShapeList lstUpdate;
		int xx0 = rand() % 20;
		int xx1 = rand() % 18;
		int xx2 = rand() % 25;
		int xx3 = rand() % 16;
		int xx4 = rand() % 12;
		int xx5 = rand() % 21;
		if(pK1 != NULL)
		{
			CString strText;
			strText.Format(_T("%u mcA"), xx0 * xx1);
			pK1->SetLabelText(strText);
			lstUpdate.AddTail(pK1);

		}
		if(pK2 != NULL)
		{
			CString strText;
			strText.Format(_T("%u C"), xx0 * xx2);
			pK2->SetLabelText(strText);
			lstUpdate.AddTail(pK2);
		}

		if(pK3 != NULL)
		{
			CString strText;
			strText.Format(_T("%u Nm/h"), xx0 * xx3);
			pK3->SetLabelText(strText);
			lstUpdate.AddTail(pK3);
		}


		if(pX1 != NULL)
		{
			CString strText;
			strText.Format(_T("%u"), xx0 * xx4);
			pX1->SetLabelText(strText);
			lstUpdate.AddTail(pX1);

			int nValue = xx0 * xx4;
			if(nValue > 200)
			{
				pX1->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX1->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX1->SetBkColor(RGB(0,0,0));
			}
		}

		if(pX2 != NULL)
		{
			CString strText;
			strText.Format(_T("%u"), xx0 * xx5);
			pX2->SetLabelText(strText);
			lstUpdate.AddTail(pX2);

			int nValue = xx0 * xx5;
			if(nValue > 200)
			{
				pX2->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX2->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX2->SetBkColor(RGB(0,0,0));
			}
		}

		if(pX3 != NULL)
		{
			CString strText;
			strText.Format(_T("-%u"), xx1 * xx5);
			pX3->SetLabelText(strText);
			lstUpdate.AddTail(pX3);

			int nValue = xx1 * xx5;
			if(nValue > 200)
			{
				pX3->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX3->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX3->SetBkColor(RGB(0,0,0));
			}
		}

		if(pX4 != NULL)
		{
			CString strText;
			strText.Format(_T("%u"), xx2 * xx3);
			pX4->SetLabelText(strText);
			lstUpdate.AddTail(pX4);

			int nValue = xx2 * xx3;
			if(nValue > 200)
			{
				pX4->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX4->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX4->SetBkColor(RGB(0,0,0));
			}
		}


		if(pX5 != NULL)
		{
			CString strText;
			strText.Format(_T("%u"), xx2 * xx4);
			pX5->SetLabelText(strText);
			lstUpdate.AddTail(pX5);

			int nValue = xx2 * xx4;
			if(nValue > 200)
			{
				pX5->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX5->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX5->SetBkColor(RGB(0,0,0));
			}
		}

		
		if(pX6 != NULL)
		{
			CString strText;
			strText.Format(_T("%u"), xx3 * xx5);
			pX6->SetLabelText(strText);
			lstUpdate.AddTail(pX6);

			int nValue = xx3 * xx5;
			if(nValue > 200)
			{
				pX6->SetBkColor(RGB(255,0,0));
			}
			else if(nValue > 100)
			{
				pX6->SetBkColor(RGB(255,255,0));
			}
			else
			{
				pX5->SetBkColor(RGB(0,0,0));
			}
		}

		if(pChartShape != NULL)
		{
			pChartShape->UpdateData(xx0 * xx1, xx0 * xx2, xx0 * xx3);
			lstUpdate.AddTail(pChartShape);
		}

		if(lstUpdate.GetCount() > 0)
		{
			UpdateShapes(&lstUpdate);
		}
	}
	else
	{
		CFODrawView::OnTimer(nIDEvent);
	}
}

该示范应用程序最终运行界面如下:

 

当然,E-Form++可视化图形组件库提供了两种风格的画布,一种是基于View,另外一种是基于CWnd,这有助于您构建不同风格的应用(例如运行时隐藏滚动条等)。 E-Form++高品质的可视化组件库完全采用VC++开发而成,具有极佳的运行性能和效率,已经在包括应用阿尔斯通在能众多全球顶级客户所验证。

下面的列表是E-Form++工控解决方案提供的部分矢量图形库,所有这些图形都是全矢量图形:

限于篇幅,这里只列这么多。

如下这个示例展示了如何使用E-Form++可视化图形组件库创建复杂的控制流程图,简单而快捷,画布上的图形可以根据需要增加自定义属性数据或者同数据库连接,如下图:

 

下图是工业管道以及液体流动示例:

 

1. 支持复杂的渐变色填充,图像填充等填充模式,为创建各种仿真、工业监控、组态图形提供了最便捷的手段。

2. 所有图形均内置定时器功能,可随时启动,随意控制运动频率。

3. 可将任何图形通过粘贴复制的方式放入左边的工具盒窗口中,可直接通过拖拉方式将图形放入画布。

4. 内置设计模式与运行模式,在设计模式下只允许进行图形的编辑,而在运行模式下,只能让图形处理运动功能或者交互事件,您也可以同时开发两个程序,一个只工作在设计模式下,另一个只工作在运行模式下。

5. 提供专业的XML处理类,方便同信息发布或者数据的交换。

6. 画布大小自由定义。

7. 系统内置完善的打印控制功能,不用编写任何一行代码即可选择打印机,设定打印纸张,控制打印方向,设置页面边界等等。

8. 支持多图层显示。

9. 支持绘图辅助线。

10. 每个图形均设定了单独的键盘和鼠标控制虚函数,可处理任何鼠标单击、双击、移动等交互事件.

11. 支持任意角度旋转文本,以及文本的所见即所得录入。

12. 采用共享GDI设备,将性能扩展到极致,可在同一画布中容纳上万个图元同时完成编辑。

13. 系统预设页面跳转、文件装载、发送邮件、打开网页等交互事件,通过覆盖相应的虚函数,可轻松增加新的交互事件。

14. 全面支持复合图形的创建,可将任何简单图形进行组合为复杂的复合图形。

15. 支持任意复杂的多边形运算,包括相交,想并,取余,联合等等操作。

16. 每个图形系统内设5个额外参数控制点,通过这些额外控制点,可调节图形的状态参数。

17. 支持直线与弧线混合编辑,可直接操作某一段图形,可将其在直线和弧线等自由转换。

18. 全面支持Undo / Redo,可设定任何多级Undo / Redo操作。

19. 可为画布上的任何图形增加即插即用的新属性值,并且新增加的属性值在修改时自动支持UNDO / REDO.

20. 支持复合文本RTF的直接编辑和直接打印输出。

21. 可对画布上的任何图形进行移动,旋转,缩放,变形,扭曲,排布等等高级的操作。

22. 支持画布大比例缩放。

23. 可通过鼠标平推画布。

24. 支持厘米,毫米,英尺,英寸等多种刻度标尺。

25. 可直接导入bmp, wmf, emf, jpeg, gif, tga, pcx, png, mng等图像文件。

26. 全面支持剪贴版,可自由复制,粘贴图形。

27. 可自由调整画布中图形的排布层次。

28. 提供小图预视功能,并可通过预视图像的矩形框,调整当前画布的显示位置。

29. 提供功能一致的ocx控件,方便 web部署或者其他语言平台开发人员进行同样功能的调用。

30. 最重要的是我们将所有这些的经过严格测试的高品质VC++源代码提供给您,此源代码还包括ocx控件的设计源代码。
d

全部超过50万行精心设计并严格测试的源代码提供无任何保留!
提供超过400个C++扩展类,50万行有效VC++/MFC源代码,70多个示例或者解决方案源代码,完整的而细致的用户在线帮助系统和文档,精心设计的辅助开发工具!

强大,灵活和易于使用的可视化图型源码库。
功能强大,灵活地创建各种各样的满足您的需求的图表。产品设计规范,很容易使用,在短短的几天就能根据您的需求设计出产品。 我们提供完整的支持产品下载试用。

功能丰富。
超多功能,如自动布局,多层次,可折叠子图,单元连接点中,XML,DXF, SHP, SVG等等,能够协助您快速灵活的创建复杂的图表。支持大量事件:如单击,双击,悬停,选择,橡皮筋选择,复制,删除,调整大小和移动的支持。支持最复杂的操作:如拖和拖放,无限次的撤销/重做和剪贴板操作等等。


节省时间和金钱,获得可靠性。
一张图胜过千言万语,E-Form++提供超过50万行精心设计和良好测试的C++源代码!开发耗时十年,全球上千家客户验证,能够为您节省大量的开发时间和金钱!

现在就来试试!
不要光听我们的说, 试试吧! 我们的免费试用版包括所有你需要你的应用程序原型。免费技术支持。

推荐:全新E-Form++工控仿真集成开发平台VC++源码解决方案2024!
新增加高级HMIBuilder解决方案,提供开发工控与仿真应用的必不可少的集成解决方案,容HMI画面制作变量设定 、脚本编辑、表达式处理、编译运行于一体,具有数十项工控与仿真应用必须具备的高难度技术,可轻松据此开出属于自己的组态应用或者组态平台,为开发该型应用节省多达80%-90%的工作量

购买UCanCode HMI & SCADA组态解决方案全部源代码!


联系 UCanCode

购买源代码或了解更多的简单方法


更多...

 
  高级解决方案

 

 
[ 主页 | 产品 | 新闻 | 下载 | 购买 | 技术支持 | 与我们联系 ]


粤ICP备05040024

UCanCode Software中国.成都
地址:中国.成都高新区永丰路24号附1号 (邮编:610041)
电话: +86-28-85354545 (18981891030)                   传真:+86-28-85354645    
Copyright 1998-2024 UCanCode.Com Software, ©版权所有。
其他的产品和公司名称或注册的商标属于其各公司版权所有。

任何问题或者建议请与我们联系:webmaster@ucancode.net