跳到主要内容

接口说明

接口访问方式:

  • 数据与机器人:xplugin::xPluginInterface() → InterfaceManager
  • 事件:xplugin::xPluginEvent() → XPluginEventSystem
  • RL 指令:栈上或成员 xplugin::RLManager

1. 基础库

1.1 注册与生命周期

符号说明
XPLUGIN_REGISTER(KEY, CLASS_NAME)插件注册功能;KEY 须与 PLUGIN_NAME、部署目录名一致
xPluginFactory()全局 PluginRegister 单例
PluginBase用户自定义插件基类,通过重写 init / afterInit / render / idle / detach 实现具体功能
setDefaultGlobalSheet(bool)构造函数内设置是否使用全局样式表
setPluginLabel(const QString &)构造函数内设置插件显示标签

1.2 枚举

枚举用途
enLanguageEnglish=0, Chinese=1, OtherLanguage=0xFF语言类型(翻译由 Qt .qm 完成,无 RegistLanguage 导出 API)
enThrowLogLevelInfo, Warning, Error, NoneLogTypeThrowLog 弹窗级别

2. 全局使用函数

函数返回值说明
GetPluginVersion()QString四段版本,当前 1.0.2.6
CreateCenterWidget(pluginName, widget)int注册中心主界面;0 成功,-1 插件名,-2 未初始化
CreateStatusBar(pluginName, widget, index=1)int底部状态栏槽位
CreateRightExpandWidgte(pluginName, widget, name="")int右侧常驻扩展窗
SwitchRightExpandWidgte(pluginName="", name="")int切换扩展窗;name 为空时关闭
CreatePhyButtonList(pluginName, type, left, right, center_texts)int物理键布局
ChangePhyButtonStatus(pluginName, type, enable)int启用/禁用物理键
ChangeModelWindowStatus(pluginName, status)int模态状态,控制物理键是否响应
ChangeFullScreen(pluginName, isFull)int全屏
GetRightExpandSideBar(QWidget **out)int获取右侧扩展侧栏指针
ThrowLog(pluginName, level, msg)int右下角提示
GetPluginDataPath(dataPath, pluginName)int获取插件存储的数据路径

物理按键状态(PhysicalButton)

字段类型说明
textQString显示文本
touched_icon / untouched_iconQString按下/松开图标路径
exec_functionstd::function<void(bool)>按下回调,true 为按下

3. 接口函数

  • 通过 xPluginInterface() 获取。除注明外,均在 UI 线程 调用;

3.1 信号

信号说明
sigNetworkConnect()控制器网络已连接
sigNetworkDisConnect(bool status)控制器网络已断开;status : true 为主动断开

3.2 与控制器插件通信 commandCustomData

/*
* 描述:与控制器插件数据通信接口(获取自定义的数据key值)
* 参数1 obj:执行控制的主体QObject
* 参数2 pluginName:控制器插件名称
* 参数3 key:控制器插件数据
* 返回值 QJsonArray:控制器插件的数据结体
*/
QJsonArray commandCustomData(QObject *obj, const QString &pluginName, const QString &key, const QString &val);

/*
* 描述:与控制器插件数据通信接口(设置自定义的数据key值)
* 参数1 obj:执行控制的主体QObject
* 参数2 pluginName:控制器插件名称
* 参数3 key:控制器插件数据key
* 参数4 val:控制器插件数据key的目标值
* 返回值 QJsonArray:控制器插件的数据结体
*/
QJsonArray commandCustomData(QObject *obj, const QString &pluginName, const QString &key, const QString &val);

/*
* 描述:与控制器插件数据通信接口(自定义数据结构)
* 参数1 obj:执行控制的主体QObject
* 参数2 pluginName:插件名
* 参数3 json:自定义数据结构
* 返回值 QJsonArray:控制器插件的数据结体
*/
QJsonArray commandCustomData(QObject *obj, const QString &pluginName, const QJsonObject& json);

/*
* 描述:与控制器插件数据通信接口(自定义数据结构)
* 参数1 obj:执行控制的主体QObject
* 参数2 json:自定义数据结构(带插件名)
* 返回值 QJsonArray:控制器插件的数据结体
*/
QJsonArray commandCustomData(QObject *obj, const QJsonObject& json);

/*
* 描述:与控制器插件数据通信接口(自定义数据结构)
* 参数1 obj:执行控制的主体QObject
* 参数2 arr:由自定义数据结构组成的Json数组
* 返回值 QJsonArray:控制器插件的数据结体
*/
QJsonArray commandCustomData(QObject *obj, const QJsonArray& arr);

3.3 xservice 通讯

方法返回值说明
getNodeData(key)QJsonValue获取节点数据
getXServiceData(key)QJsonValue读取节点数据
getXServiceData(key, subKey)QJsonValue读取节点数据
setXServiceData(key, var)bool同步方法设置数据
setXServiceData(key, subKey, var)bool同步方法设置数据
commandXServiceData(key, var)bool异步 command 设置数据
execCommandXServiceData(key, var)QJsonValue同步 command 设置数据
connectXServiceData(pluginName, serviceKey, callback, key="")bool订阅消息回调
disconnectXServiceData(pluginName, serviceKey, key="")bool取消订阅消息

3.4 RC 通讯

方法说明
rcRequest(module, command, data, timeout=4800)异步请求数据,默认超时 4800 ms
rcRequestFullCommand(full_command, request_val, timeout=4800)异步请求数据,使用完整节点路径
rcExecRequest(module, command, true, timeout=1600)同步请求数据,默认超时 1600 ms
rcExecRequestFullCommand(full_command, request_val, true, timeout=4800)同步完整命令

3.5 网络状态

方法说明
connectNetworkStatus(isConnect, pluginName, obj, callback, id="")注册连接/断开回调,返回 id 存储
disconnectNetworkStatus(isConnect, pluginName, id="")按 id 取消注册

3.6 机器人与 HMI 状态

方法返回值说明
getRobotConnected()bool是否已连接机器人
getRobotID()QString机器人 ID
getRobotEleStatus()bool上电状态
getRobotOperateIsHand()bool是否为手动模式
getRobotPhyStatus()QString当前运行状态描述
getUserOperateLevel()int权限级别 1~5
getRobotIP()QString当前控制器的 IP 地址
getRobotType()QString当前机型
getRobotModelType()int构型/设备枚举
changeRobotPowerStatue(status, isRsync=true)bool修改上电状态 isRsync 默认同步调用
changeRobotModelStatue(isHand, isRsync=true)bool修改手/自动状态 isRsync 默认同步调用

3.7 程序运行过滤与启停

方法说明
startRunningFilter(doOpen)安装启动过滤器,设置后需手动启动 startRunning()
stopRunningFilter(doOpen)安装停止过滤器, 设置后需手动停止 stopRunning()
startRunning() / stopRunning()当前程序运行启停

3.8 工具 工件 速度 区域

方法说明
getCurTool() / getCurWobj()当前工具、工件
getToolList() / getWobjList()列表
getSpeedList() / getZoneList()速度、转弯区列表

3.9 变量

方法说明
getVarDataList(type="")按类型列变量名
addVarData(name, value, isPers=false)新建变量
delVarData(name) / delVarData(names)删除变量
updateVarData(name, value)更新变量
getVarObjDataByName(name)结构 JSON
getValuesOfPERSVars(names)读 PERS 变量
setValuesOfPERSVars(names, values)设置 PERS 变量
registPERSVars(names)针对PERS 变量注册持续刷新
getRegistedPERSVars()读已注册的 PERS 当前值

3.10 点位

方法说明
getPointNameList()获取点位名称列表
getPointObjDataByName(pointName)获取点位结构
getPointDataByName(pointName)获取点的轴空间坐标值
getCurrentPointData(toolName="", wobjName="")获取当前位置点
addCurrentPoint(pointName, isJoint, toolName, wobjName)由当前点新建点位变量;isJoint 为关节点
changeCartPoint(pointName, xyz_abc)修改笛卡尔点
checkPointMoveTo(from, to)点位可达性校验;0 成功,1 同点,-2 奇异等
checkPointSame(from, to)点位一致性校验
moveToStart(errCode, pointTo, speed, isMoveJ)运动至点,speed 1~100
moveToStart(errCode, pointTo, speed, confCheck, isMoveJ)运动至点,进行配置检查
moveToStop()停止运动

3.11 工程

方法说明
getProjectList()获取工程列表
createProject(name, desc="", isUsed=false)新建工程;0 成功
changeProject(name)切换工程
removeProject(name)删除工程

3.12 IO 与寄存器

方法说明
getIOHash()获取 IO 值
getIOByType(sigType)sigType 为 "DI/DO/GI/GO/AI/AO" 或整型
setIOValue(name, sigType, value)设置 IO 值
getIOValue(name)获取 IO 值
getRegisterHash()获取寄存器名与枚举值列表
getRegisterValue()获取全部寄存器 JSON 值

4. 辅助编程

方法说明
createGroups(lab, groupName)创建指令组(界面标签 , 内部名)
createTypeKey(type)创建指令 type
createTypeToGroup(groupName, type) / (groupName, typeList)将指令加入指令组
createSkeleton(type, str)设置解析器匹配串
createInsDescribe(type, str)设置说明文本
createInsDefault(type, strDef)设置默认输出文本
createPattern(type, str)设置正则反解
createInsertWidget(type, func)设置编辑窗,返回 RLContentBase* 子类
createPropertyWidget(type, func)设置属性窗,返回 RLContentBase* 子类
createData(groupName, type, desc, func1, func2)快速创建普通指令(插入窗 + 属性窗工厂)
  • RLContentBase:FillWith / ToString / CheckInsert / CheckReplace。 附属方法

5. 事件(event/)

5.1 事件枚举范围

区间含义
0x0000–0x0FFF系统事件
0x1000–0x1FFF硬件事件
0x2000–0x2FFF网络事件
0x3000–0x3FFFXService事件
0x4000–0x4FFFRC事件
0x5000–0x5FFFUI事件
0x8000–0xFFFF用户自定义事件

5.2 事件方法

API说明
subscribe(type, handler, pluginName, context=nullptr)订阅一个事件,返回订阅 ID
subscribeFiltered订阅一个带有特定过滤器的事件,返回订阅ID
subscribeOnce订阅一个一次性事件(执行一次后自动取消),返回订阅 ID
unsubscribe(id)取消指定ID的订阅
unsubscribeByPlugin取消指定插件的所有订阅
unsubscribeByType取消指定事件类型的所有订阅
unsubscribeByTypeAndPlugin取消指定插件的事件类型的所有订阅
publish(event) / publish(type, data, source)同步发布事件
publish(type, data, source)同步快速发布事件
publishAsync(type, data, source)异步发布事件
registerCustomEventType(name)注册用户自定义事件类型
registerAllEvents()注册全部内置监听(宿主侧)

详见 事件系统


6. 日志系统

在 .pro 中定义 PLUGIN_NAME 后可用:

级别
DLOG / ILOG / WLOG / ELOG / SLOGDebug / Info / Warning / Error / Sudo
DSLOG / ISLOG / WSLOG / ESLOG / SSLOG在输出字符之间插入空格
  • 日志目录的默认:./log/xplugin/<PLUGIN_NAME>/

7. 同步工具

方法说明
SyncTool::instance()同步工具的调用实例
pushFile(from, to_module="hmi")推送目录数据到控制器模块
pushOneFile(from, to_module="hmi")推送单个文件到控制器模块
pullFile(from_module="hmi", to_path="", has_dialog=true)从控制器模块拉取指定路径数据

相关阅读