新功能发布 | TSMaster工具箱集成开发环境系列3-工具箱调用小程序库

今天继续tsmaster工具箱系列第三章,如何用python脚本调用自己编写的api函数。
安装小程序库
install the applet library /
打开tsmaster,拖入一个dbc文件,可以到tsmaster的安装目录去找这个文件,在demo-databases里面任意找一个,比如说can_fd_powertrain,拖入之后就可以关闭这个数据库界面。
接下来选择硬件通道,1路can,随后打开总线仿真也就是rbs的界面,双击激活engine节点。当剩余总线启动的时候,engine节点就会往外发送自己的周期报文。
切换到自定义函数组,点击右键添加一个自定义函数,名称设置为control_rbs。函数的参数可以设置稍微复杂一些,比如第一个参数是激活标志,也就是const bool aenable;第二个参数是附加信息,比如const pchar ainfo,这样就把函数的接口给定义好了,接下来实现这个函数。
首先可以打印出,用户希望看到的信息,也就是log(ainfo),接下来判断enable标志,if(aenable),如果是enable那么就写com.can_rbs_start,否则就是stop,这样api就做好了。为了让其他的程序用到这个函数,需要将controller这个小程序安装到tsmaster中,成为小程序库。切换到属性页面,点击小程序库这个开关,首先编译,其次安装就结束了。此时就可以从tsmaster的任何位置,调用这个api。
自动化测试
automated testing /
小程序库,有controller这个mp小程序,它有一个api函数。如何验证呢?可以打开一个自动化模块,选中入口点,回车,再双击nop,到右侧,修改类型为api调用,再修改函数调用类型为小程序库函数,此时会弹出一个函数选择器,第一个函数就是我们刚才设计的control_rbs。选中该函数双击,在右侧填入参数,第一个是使然标志,填入true或者1都可以,第二个是需要打印的信息,比如start from automation module,随后按f9启动,会弹出提示信息。
在信息里面首先是打印的字符串,也就是start from automation module,其次是一个错误信息,提示在激活仿真引擎之前必须连接应用程序,也就是点击左上角的启动按钮。按照提示连接一下,这样仿真引擎才具备运行条件。
再切到自动化模块,按f9,程序立马执行成功。切到trace窗口,可以看到engine节点的报文,再回到自动化模块,选中control_rbs这个命令,粘贴一个一模一样的函数调用,将新的函数调用改为禁止rbs,也就是这里填false,信息填入stop from automation module,再按一次f9,由于最后一次执行的步骤是禁止操作,trace窗口的报文,也就不再刷新,engine节点已被禁止。因为总线仿真已经停止,此时自动化模块的测试工作就结束了。
启动窗体设计
launch form design /
打开工具箱的主界面,添加一个新的工具箱,点击工具栏上的“+”号按钮,输入新工具箱的名称:test,按回车,工具箱就创建完毕。注意该工具箱,默认位于当前工程文件夹的路径中,它会跟随当前的工程走,表格中,全局一栏的勾是取消勾选的状态。点击右侧的文件夹按钮,就可以看到我们的工具箱了。它确实是位于当前的工程路径下,这就意味着,当新建工程或是加载别的工程的时候,这个工具箱就找不到了。
倘若用户想创建一个永久的工具箱,让每个工程都可以使用这个工具箱的话,就需要开启全局工具箱模式。点击左上角的齿轮按钮,将鼠标放到上面会提示激活工程模式或者全局模式,那么默认是选中状态,表示工程模式激活,再点一次就激活全局模式。这个时候,再创建工具箱,所创建的工具箱就会被放到,tsmaster的安装目录上,而不会跟随工程。
我们来操作一下,点击新建按钮,输入global1,回车,可以看到新建的工具箱排在表格中靠后的位置,而且全局的勾,是选中的状态。打开文件夹,向上一级,还可以看到该工具箱所在的文件夹,还有系统自带的两个示例的工具箱。一个是控件的使用指南,另一个是原始的can报文发送窗口。接下来进入界面设计的环节,选中test工具箱,双击,进入到代码设计页面,点击工具栏上的窗体按钮,来启动窗体设计器。
在界面中添加两个按钮,一个是启动rbs一个是禁止rbs,选中button1,按f11切换到属性页面,过滤器输入name,将名称改为btnstart,caption改为start,选中button2,caption改为stop,将name改为btnstop,至此窗体设计结束。
编写按钮的事件代码
write event code for the button /
添加import,在添加之前,首先要转到小程序模块页面,在空白处点右键添加模块,选择controller小程序库,该步骤使得我们的controller小程序的api对于python来说是可见的。再回到工具箱代码设计界面,来到代码的第二行,点击右键,选择插入模块import,再选择我们的controller,可以看到,controller已被导入。
为了获得更好的编程体验,可以使用vs code,点击工具栏上的编辑按钮,打开vs code,接下来来到ui创建结束的地方,也就是位于init函数中的下半部分,首先添加两个按钮的点击事件,按四个空格输入def on_start_click,在函数中调用controller的api,也就是controller。弹出代码的第一行就是我们的api,按回车。再敲一下左括号,可以看到两个参数提示信息,第一个填入true,第二个随意填写字符串,比如说start from python,回车。再添加另一个函数def on stop_click,同样controller.control_rbs此时是禁止,所以是false,内容是stop from python。
接下来关联两个事件,也就是self.btnstart.onclick=on_start_click、self.btnstop.onclick=on_stop_click,程序编写完毕,ctrl+s保存。再切回tsmaster,点击代码的空白处,可以看到代码已经刷新到最新的状态。按f9启动,最后点击start按钮,当然点击之前首先要连接应用程序,再点击start,就可以看到engine节点的报文都出现了,随后点击stop按钮,engine节点的报文就停止发送了。打开系统消息,就可以看到我们刚才打印的信息-start from python和stop from python。
本章内容我们可以得知,现有的小程序的api是可以轻松被python程序调用的,这极大的丰富了我们的python的函数库。

如何选择smt贴片加工厂
安泰租赁维修中心为某高校提供电子薄膜材料测试方案
iPhone面板出货量年底将达到2.07亿片
DFC型系列伺服放大器原理及常见故障的分析与处理
区块链在保险行业可能会有怎样的成就
新功能发布 | TSMaster工具箱集成开发环境系列3-工具箱调用小程序库
内存条坏了会出现什么状况_内存条坏了如何解决
新唐科技W55RFS27T1B发射器简介
在最流行5.5寸屏幕的智能手机时代,小米6的5.15寸是那种考虑?
如何通过物联网更充分地利用智能照明
利用ADMS平台加速混合信号集成电路设计
一文知道线电压和相电压的区别
OpenAI发布了Microscope
新品推荐|E82.C256K-J1百通道压电控制器
最新款Molex电源连接器现在RS Components有售
杂散测试相关概念
小米6Plus什么时候上市最新消息:疑似小米6Plus售价流出,2999起步,顶配8G内存高达四千元!
锂电隔膜表面瑕疵检测设备的功能介绍
RFID医疗智能柜提升医院精细化管理水平
中兴一款新机的挖孔摄像头专利曝光将镜头隐藏在了状态栏上