Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发。开发语言同样是基于.NET框架的C#语言或VB语言。Smart组件是Robotstudio软件中实现高级仿真功能的智能组件,软件自身提供的Smart组件包含信号与属性、传感器、建模、运动等子对象组件。当软件自带的Smart组件无法满足仿真需求的时候,我们就可以通过对Robotstudio软件的二次开发,开发出满足需求新的Smart组件。本期,再来为大家介绍一下Robotstudio软件中Smart组件的开发方法,我们还是从实现“Hello Word!”消息输出开始。Robotstudio软件版本:RobotStudio 6.08SDK版本:RobotStudio SDK.6.08开发软件版本:MicrosoftVisual Studio Professional 2019一、开发环境配置开发环境的搭建比较简单,在上一篇文章《基于C#语言的Robotstudio软件二次开发基础》中已经介绍过了,小伙伴可在文章列表中查看一下,这里不再赘述。二、开发项目创建1.创建新项目,项目模板选择ABB机器人提供的Smart组件二次开发模板“Robotstudio 6.08 Smart Component”。

2.配置新项目时可以对项目进行命名,修改项目保存位置。

3.项目创建成功后,软件代码编辑区会自动打开SmartComponent1.xml、CodeBehind.cs两个文件。若是自动打开,可以在右侧的“解决方案资源管理器”对话框中双击两个相应的项目文件打开。

说明:自动生成的*.xml代码编辑文件主要用于Smart组件的功能属性设置,如Smart组件的外观、标题、离散变量与连续变量的属性等,也可以认为是Smart组件前台开发。*.cs代码编辑文件主要用于Smart组件的功能实现,如信号置位后的输出响应等,也可以认为是Smart组件的后台开发。三、代码编写1.在SmartComponent1.xml代码编辑窗口中,删除下图中红色方框中的代码,并修改箭头所指位置处的“SampleSignal”为“Button”。红色方框中的代码分别是设置Snart组件的连续变量属性、绑定信息属性以及图形化属性设置,本例暂时不需要,因此删除。Signals用于设置Smart组件的信号属性,代码的含义:设置I/O信号名称为SampleSignal,信号类型为数字量输入。

SmartComponent1.xml完整程序代码如下所示:

<?xml version="1.0" encoding="utf-8" ?><lc:LibraryCompiler xmlns:lc="urn:abb-robotics-robotstudio-librarycompiler"                    xmlns="urn:abb-robotics-robotstudio-graphiccomponent"                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                    xsi:schemaLocation="urn:abb-robotics-robotstudio-librarycompiler file:///C:\Program%20Files%20(x86)\ABB%20Industrial%20IT\Robotics%20IT\SDK\RobotStudio%20SDK%206.08\LibraryCompilerSchema.xsd                                        urn:abb-robotics-robotstudio-graphiccomponent file:///C:\Program%20Files%20(x86)\ABB%20Industrial%20IT\Robotics%20IT\SDK\RobotStudio%20SDK%206.08\GraphicComponentSchema.xsd">  <lc:Library fileName="SmartComponent1.rslib">    <lc:DocumentProperties>      <lc:Author>Presidentlc:Author>      <lc:Image source="SmartComponent1.png"/>    lc:DocumentProperties>    <SmartComponent name="SmartComponent1" icon="SmartComponent1.png"                    codeBehind="SmartComponent1.CodeBehind,SmartComponent1.dll"                    canBeSimulated="false">      <Signals>        <IOSignal name="Button" signalType="DigitalInput"/>      Signals>      <Assets>        <Asset source="SmartComponent1.dll"/>      Assets>    SmartComponent>  lc:Library>lc:LibraryCompiler>

2.CodeBehind.cs代码编辑窗口中,同样删除下图红色方框中的代码,然后在红色箭头所指位置处编写如下代码:

CodeBehind.cs完整代码如下所示:

using System;using System.Collections.Generic;using System.Text;using ABB.Robotics.Math;using ABB.Robotics.RobotStudio;using ABB.Robotics.RobotStudio.Stations;namespace SmartComponent1{    ///     /// Code-behind class for the SmartComponent1 Smart Component.    ///     ///     /// The code-behind class should be seen as a service provider used by the     /// Smart Component runtime. Only one instance of the code-behind class    /// is created, regardless of how many instances there are of the associated    /// Smart Component.    /// Therefore, the code-behind class should not store any state information.    /// Instead, use the SmartComponent.StateCache collection.    ///     public class CodeBehind : SmartComponentCodeBehind    {        ///         /// Called when the value of an I/O signal value has changed.        ///         ///  Component that owns the changed signal.         ///  Changed signal.         public override void OnIOSignalValueChanged(SmartComponent component, IOSignal changedSignal)        {            if (changedSignal.Name == "Button")            {                Logger.AddMessage(new LogMessage("Hello World!"));            }        }    }}

四、项目编译项目编译之前需要对项目“生成事件”进行相关设置,否则编译时会出现一些错误。1.VS软件中上方的“项目”菜单下点击“SmartComponent1属性”,在打开的对话框中左侧属性条中点选“生成事件”,然后在生成后事件命令行中将原TargetPath文件路径信息修改为D:\Program Files (x86)\ABB Industrial IT\Robotics IT\RobotStudio6.08\Bin\LibraryCompiler.exe。由于Smart组件开发程序编译过程中需要依赖LibraryCompiler.exe,将一些生成文件复制到项目文件目录中,因此,这里需要将LibraryCompiler.exe的文件目录添加进来。LibraryCompiler.exe的文件目录是Robotstudio软件安装目录的bin文件夹。若是Robotstudio软件安装时未修改安装位置,则这里无须再修改生成事件,直接编译生成即可。

2.设置完成后编译项目,编译成功后在项目文件目录中生成*.rslib 格式的Smart组件库文件,此文件即为我们二次开发的Smart组件,包含二次开发的所有功能。

五、运行测试1.打开Robotstudio软件,新建一个机器人系统,系统选项保持默认即可。2.软件“基本”菜单栏下,“导入模型库”按钮下拉菜单中点击“浏览库文件”,浏览到编译生成的*.rslib 格式Smart组件库文件SmartComponent1,并将其打开。

3.在弹出的验证Smart组件提示框中点击是,Smart组件被加载进来。

4.左侧布局浏览树中,右击加载进来的Smart组件,打开组件属性窗口,可以看到,我们开发的Smart组件中显示Button信号按钮。

5.点击“Button”按钮,信号被置位,信号指示灯被点亮,同时在软件下方的信息输出窗口中显示“Hello World!”。

····The End····


相关阅读 | CATIA软件基于宏指令的焊点数据导出

相关阅读 | 基于VB.NET的NX UG软件二次开发基础

相关阅读 | CATIA软件焊点数据导出工具应用程序编写

相关阅读 | CATIA软件中基于VBA的焊点小球生成工具应用程序编写

相关阅读 | AutoCAD软件基于VBA二次开发的圆形绘制应用程序编写

相关阅读 | CATIA软件基于VBA二次开发的Excel坐标数据导入与模型生成

上一篇 | 基于C#语言的Robotstudio软件二次开发基础


c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础相关推荐

  1. c#获取autocad安装位置_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发. 开发语言同样是基于 .NET框架的C#语言或VB语言. Smart组件是Robotstudio软件 ...

  2. Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    目录 一.开发环境配置 二.开发项目创建 三.代码编写 四.项目编译 五.运行测试

  3. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...

  4. unity 加载关卡_Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库

    摘要:Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库 Application.isLoadingLevel 正在加载关卡? static var ...

  5. Unity 制作翻书电子书,外部异步加载千张图片(二)

    Unity 制作翻书电子书,外部异步加载千张图片(二) Hello!这是我的第二篇文章,希望在你阅读这篇文章之后对你能有帮助. 上文完成的程序,我说过只是解决了当前的问题,存在了很多瑕疵.例如:1.替 ...

  6. Arcgis加载离线地图服务二次开发

    ARCGIS搭建离线地图服务器,进行离线地图二次开发 1.     离线地图金字塔瓦片数据  (下载数据教程:http://www.bigemap.com/helps/doc20190312126.h ...

  7. opencv-python基础用法详细代码-图片加载-ROI-边缘滤波-二值化-轮廓提取-膨胀腐蚀等

    目录 1.1图像的导入和导出 1.2像素运算 1.3ROI与填充 1.4模糊与锐化操作 1.5边缘保留滤波 1.6图像二值化 1.7图像直方图 1.8绘制外轮廓 1.9对象测量 1.10区分指定外轮廓 ...

  8. Cocos Creator 资源加载流程剖析【二】——Download部分

    Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...

  9. 第13章 程序的动态加载和执行(二,用户代码)

    弄清楚两个问题,这段应用代码就容易读懂了: 1,核心代码是如何把指针指到这里的: 2,这段代码是如何使用内存的: 读这个代码的时候,可以类比我们平时写的练习小程序,以C程序为例,我们首先是定义了一些数 ...

最新文章

  1. 机器学习算法基础知识
  2. 大厂技术资料:Redis+Nginx+Spring全家桶+Dubbo精选
  3. 微服务架构与Docker容器之间关系
  4. [网络流24题]最小路径覆盖问题
  5. GNS3模拟ATM的简单配置
  6. Boost:字符串正则表达式的测试程序
  7. 20应用统计考研复试要点(part18)--概率论与数理统计
  8. 剑指offer之字符流中第一个不重复的字符
  9. 最简单又最复杂的单例模式
  10. GB50311-2007综合布线工程设计规范
  11. php网上阅卷源码,翰林金榜网上阅卷
  12. 利用LU分解法的多项式拟合实验
  13. 期货用期权对冲(期货用期权对冲吗)
  14. 阿里全国脱贫攻坚先进-万祥军:谋定中国农民丰收节交易会
  15. 阻抗匹配50欧姆的原因
  16. 【STM32单片机】贪吃蛇游戏设计
  17. 软件测试学习(基础篇)— —第5天:JS基础
  18. 【web素材】13—43套大气的企业网站模板
  19. 教你简单4步制作“截图工具”,再也不用微信或QQ截图了
  20. pytorch之迁移学习

热门文章

  1. git提交屏蔽某java类_git 删除某次指定的提交
  2. 女友刷B站流量告急,技术男友轻松搞定!
  3. 全球IPv4地址正式耗尽,你知道吗?
  4. jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...
  5. html select选择事件_用 Java 拿下 HTML,分分钟写个小爬虫
  6. 在oracle中如何复制用户的权限不够,linux 普通用户下 移动或复制一个zip文件权限不够怎么办...
  7. oracle未找到远程连接,Oracle ORA-02019:未找到远程数据库的连接说明 | 学步园
  8. 13-爬虫之js加密,解密,混淆,逆向破解思路
  9. html用jq设置动态效果,jQuery实现基本动画效果的方法详解
  10. java并发编程之美-阅读记录11