WinCC V15:亲测实例 - .NET控件开发指南

需积分: 10 1 下载量 161 浏览量 更新于2024-07-15 收藏 1.83MB PDF 举报
本资源文档标题为《109759944_Prepare.NetControls_DOC_en.pdf》,主要针对WinCC Professional/V15 Runtime System展开,内容涉及如何在WinCC环境中开发.NET控件的实际操作步骤和实例。作者通过Siemens官方支持文档,提供了一套详细的教程,旨在帮助用户理解和创建自定义控件以增强WinCC的功能。 在该文档中,开发者首先了解到.NET控制的创建过程,这可能涉及到.NET Framework的集成,包括对Visual Studio这一集成开发环境的使用。Visual Studio在此处扮演了关键角色,它为.NET开发提供了丰富的工具集和平台,使得控件的开发变得更加高效和灵活。 WinCC是西门子公司专为工业自动化设计的可视化监控和数据采集系统,其与.NET控件的结合能够扩展其功能,允许用户定制界面组件,满足特定应用的需求。例如,开发者可以创建带有图形用户界面(GUI)的控件,用于显示实时数据、执行逻辑操作或者作为与其他系统交互的桥梁。 文档强调,提供的应用程序示例并非法律约束或合同义务,而是作为一种免费的服务,供用户参考和学习。这些示例仅作为通用任务的解决方案指导,并非针对特定客户的定制解决方案。用户在实际应用时必须确保产品按照适用法规正确且安全地运行,并自行测试和调整示例以适应其特定系统环境。 此外, Siemens授权接收者拥有非独家、不可转让且不可再许可的权利使用这些示例,这意味着用户可以在自己的项目中使用但不能转售或分发这些示例,同时也要尊重西门子的知识产权。 这份文档对于希望在WinCC环境中使用.NET技术的开发人员来说,是一份宝贵的实践指南,它详细解释了如何利用.NET框架构建和集成控件,提升WinCC的用户体验和系统的灵活性。

#include "prepare_ogm.hpp" namespace senior { namespace guardian { namespace prepare { std::string PrepareOgm::Name() { return "Prepare Ogm Element"; } void PrepareOgm::Initiate() {} void PrepareOgm::Process(data::DataFrame& his, data::DataFrame& cur) { if (cur.source_ogm_points_.is_invalid()) return; if (cur.source_visual_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_visual_ogm_points_.begin(), cur.source_visual_ogm_points_.end()); } if (cur.source_higher_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_higher_ogm_points_.begin(), cur.source_higher_ogm_points_.end()); } auto& predict_path = cur.monitor_data_.mutable_predict_path(); predict_path.GenerateBoundary(cur); cur.AABox2d_ = predict_path.vehicle_AABox2d_; // if (!his.monitor_data_.is_need_to_take_over()) { // LOG(INFO)<<"1"; cur.AABox2d_.SetWidth(cur.AABox2d_.width() + 1.0); cur.AABox2d_.SetLength(cur.AABox2d_.length() + 1.0); // } std::vector<math::Vec2d> corner_points_; cur.AABox2d_.GetAllCorners(&corner_points_); auto& polygon2d = predict_path.tractor_polygon2d_; math::Vec2d temp; VoxelGrid filter_; common::Time now = common::Time::Now(); for (auto& point : cur.source_ogm_points_) { temp.set_x(point.x()); temp.set_y(-point.y()); if (cur.AABox2d_.IsPointIn(temp)) { cur.AABB_ogm_points_.emplace_back(point); } } cur.guardian_diagnose_["Prepare_PrepareOgm_AABox_filter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); now = common::Time::Now(); filter_.VoxelGrid_ApplyFilter( cur.AABB_ogm_points_, cur.ogm_points_, corner_points_, 0.1, 0.1, 0); cur.guardian_diagnose_["Prepare_PrepareOgm_VoxelGrid_ApplyFilter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); cur.ogm_points_.set_stamp(cur.source_ogm_points_.stamp()); cur.ogm_points_.set_time(cur.source_ogm_points_.time()); cur.ogm_points_.set_delay_time(cur.source_ogm_points_.delay_time()); cur.ogm_points_.set_valid(); } } // namespace prepare } // namespace guardian } // namespace senior 改变为C语言程序

2023-06-13 上传