跳到主要内容

示教器二次开发教程

介绍

控制系统的二次开发可以总结为示教器和控制器的交互,示教器作为用户使用的图形界面,可以在上面进行各种操作以达到下发指令的目的,而控制器则负责处理这些指令,并且与机器人伺服进行交互,同时将各种交互和处理的结果反馈给示教器,通过图形界面显示出来。因此二次开发的工作实际上就是自己编写示教器图形交互界面和控制器逻辑运行功能的工作。

· 示教器给控制器发送消息

一、编写一个信号触发的按钮

既然要交互,那肯定需要示教器能有触发信号的方法,这样示教器才能知道什么时候发送信号给控制器。最典型的方法就是制作一个按钮,当用户点击按钮的时候便发送信号给控制器,当然还有很多其他触发信号的方法,比如打开某个界面时,收到某个通讯时,计时器达到某个时间时,这里就选最简单也最典型的按钮举例。

首先从官网下载已配置好的环境和示教器二次开发的 demo 文件,使用 QT 打开 demo 例程

打开例程之后,我们进入 QT 的设计界面

给该 demo 例程添加一个 Push Button(按钮)控件,并使用转到槽来编写点击该按钮时触发的函数

clicked()代表点击该按钮会触发信号,在触发函数中写入

Nextp::getInstance()->sendMessage(Nextp::SetFirstUserParaCommand,QByteArray().append(QString::fromStdString("hello"))); 如下图所示

这是一个通过按钮触发的槽函数,每当用户点击按钮的时候,就会执行其中的内容,这段代码的实际含义是通过协议号 0x9200 给控制器发送 hello 这一段字符串,其中 Nextp::SetFirstUserParaCommand 代表了协议号 0x9200,具体的协议号可以参考下图

此处的协议号皆为二次开发开放的协议号,而控制器部分的接收函数已经内置好了,所以只需要通过对应的协议号发送消息,控制器就能收到信号。这本例程里,这个消息是一段字符串 hello,这个消息可以替换为任何以 QString 格式储存的参数,实际开发中常使用 Json 格式。

使用 Desktop Qt 5.9.0 GCC 64bit 套件 release 进行编译

编译成功后启动程序进入管理员账户,密码 123456,之后进入用户界面

找到我们刚刚添加的按钮,点击一下,会看到编译输出的地方显示示教器通过 0x9200 给控制器发送了 hello

到这一步,我们的示教器端通讯发送已经完成了,只要我们按下按钮,就会有一条 hello 消息发送给控制器,但是控制器并不知道 hello 是什么意思,所以我们还需要进行下一步控制器的二次开发,让控制器知道接收到 hello 之后自己要进行什么处理,这个处理可以是给机器人发运动指令,输出 IO 信号或者给示教器返回消息,具体要实现什么功能需要客户自己实现,控制器端的二次开发教学请跳转《控制器二次开发通讯教程》