ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))

激光打标是以高密度、高能量的激光束对各种材质媒介(塑料,布匹,金属,陶瓷等等)进行表面局部照射加工,使表层材料汽化或发生颜色变化的化学反应,从而留下永久性标记的一种清洁环保的表面加工方法。激光打标可以打出各种文字、符号和图案等,字符大小可以从毫米到微米量级,这对产品的防伪有特殊的意义。正是因为其普适性优良,使其在制造业对产品质量要求越来越严苛的今天发挥其越来越宽广的应用。
在ApolloStudio中硬件支持仓库中也对市面上使用范围最广、影响力最大的由北京金橙子科技股份有限公司所开发的激光打标机控制板卡进行了深度支持(以EzCad2为载体)。EzCad2是专为平面标刻、精细零部件切割所专门设计的版本。EzCad2基本操作我们在此篇不再赘述,本篇着重点在于对其进行二次开发,我们先在脚本工具集中来大致预览下ApolloStudio所提供哪些精细功能:
ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

ApolloStudio所支持的功能完全来自官方授权最新版的SDK,集成度高达90%,适度删减了部分二次开发中冷门的用法,并以应用场景的需求进行了适量的扩充(比如通信远程控制功能)。
开发准备 在开发之前我们需要了解下二次开发的流程原理,ApolloStudio通过SDK直接接管了激光打标板卡,因此无需再开启EzCad2软件(强行开启也会报错,反之亦然,同一时间只能由一款软件对板卡进行接管,ApolloStudio如果不点启动按钮进行初始化操作则不会对板卡进行接管,EzCad2开启会默认启用初始化操作),在ApolloStudio中对二次开发流程进行了大幅优化后可以简单分为3个步骤:

  1. 加载模板文件(必需项)
  2. 替换模板内容(该步骤可根据需求省略,不执行替换操作会默认调用模板内置编码规则进行标刻,替换操作会令内置规则失效)
  3. 执行标刻(必需项)
ApolloStudio内部本身不带SDK,故开发之前需将SDK完整的复制到ApolloStudio,本篇中以官方最新发布的支持二次开发的2.14.9开发版EzCad2为例(官网下载的版本不包含SDK,拥有SDK的版本需得到官方分发或网上获取,2.14.9版本软件内置了SDK,不同硬件可能需要不同版本的软件进行支持,本文以官方V4板卡配2.14.9软件为例),开发之前需将该版本EzCad2软件目录内所有文件(包括文件夹)完整复制到ApolloStudio程序根目录中,切记。
开始使用 编辑模板 EzCad2软件二次开发是通过标记对象的对象名来找到对应对象的,所以我们事先在需要替换对象内容之前对对象名称进行命名:
ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

我们这里在模板内放置一个文本数据,然后对其进行命名为“1”,保存模板,并命名模板文件名为1.ezd。(设置为二维码也可以,我们这里为了直观简洁直接使用文本数据,图片目前不支持替换,主要原因是不同尺寸格式来源的图片在EzCad2里面需要对图像的工艺参数进行定制才可达到令人满意的效果,尚不具备批量自动处理的能力(官方证实),有替代方案是可以通过创建多个模板,对不同图案进行个性定制后,通过模板文件名进行调用(模板内文本属性的内容还是可以替换的))
ApolloStudio配置 ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

在ApolloStudio中任务列表中组态界面单元、脚本逻辑单元以及金橙子2D标刻卡这3个任务项。(备注:基本应用场景配置到此结束,后续如果需要使用远程通讯控制标刻这一扩展功能,则还需添加TCP/IP网口通讯模块,并配置协议为金橙子板卡外控协议(该模式下ApolloStudio必须为服务器模式,远程调用方为客户端))
ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

界面与脚本 在本案例中,我们想要实现可以通过界面按钮或者板卡输入引脚(板卡默认自带8进8出共16个自定义IO点)进行触发标刻,并且界面同步显示标刻的内容。
UI设计
【ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))】ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

我们设置一个命名为pic1的图像框,然后配置一个按钮,值得注意的是需要设置按钮的“控件自定义事件”,如上图所示:点选按钮后,点击控件自定义事件,在弹框中选择“绑定按钮标志位”,这里我们设置数值序号为0,然后添加事件,确定保存事件即可,保存该UI布局文件。
脚本设计
#-*- coding: UTF-8 -*- #加载内嵌模块 import clr,sys,time,datetime#执行循环扫描 while True: #根据按钮0的触发标志位或者板卡硬件输入0的触发来激活操作流程 if AS.Func_UI_Button_GetValue(0) or AS.Func_LM_JCZ_GetInPort(0): AS.Func_LM_JCZ_LoadMarkFile("D:\\Download\\1.ezd")#加载EzCad2模板文件 AS.Func_LM_JCZ_ChangeContent("1", "hello myworld!")#替换对象内容 AS.Func_UI_PictureBox_SetImage("pic1", AS.Func_LM_JCZ_GetPreImg(640, 480))#界面显示预览图像 AS.Func_LM_JCZ_DoMark(False)#开始标刻,带True表示飞行标刻模式 AS.Func_UI_Button_SetValue(0, False)#复位按钮触发标志位 time.sleep(0.5)#系统扫描周期,减少CPU占用率

脚本中我们通过设置一个循环扫描,周期性的检测按钮和IO输入点被触发的信号来执行操作。
结果验证
ApolloStudio在启动时会尝试连接板卡,这里需要等待10秒左右(笔者也不清楚官方为何设计这么久),之后点击打标,即可看到图像显示,并且已驱动激光机对预览图像进行加工操作(由于设置了循环扫描,故该操作过程是可以重复触发的)。
ApolloStudio高手之路(4)(用Python以最轻便的方式进行金橙子激光打标板卡二次开发(以EzCad2为载体二次开发))
文章图片

***********************************************************************************************************************************************
ApolloStudio最新版下载地址(网盘有交流群号):
(点击跳转至首页文章,见文章最底部下载链接)

    推荐阅读