## **基类介绍**:
基类文件位于自美系统目录`/python/`下,文件名为:`MsgProcess.so` 自美系统采用多进程消息通讯模式架构,每一个模块间通信需要继承基类来实现进程中的标准通信。
>其保护代码安全和稳定自美系统基类进行了C化封装,这样做也优化了Python语言处理速度。基类是已经固化了有核心部分,在二次开发完全不需要改动也不能随时改动的,否则会影响到整个系统的稳定运行。
这里将基类在二次开发中使用方法和用到的一些函数、方法,在自美系统中每一个有通讯需求的模块都需要继承这个基类,如:
* 唤醒模块`Awake`,位于:`/python/package/Awake.py`
* 录音模块`Record`, 位于:`/python/package/Record.py`
还有插件中也需要继承基类(插件中继承基类后能实现与系统默认模块同样的功能),如:
* 音乐插件`Music`,位于:`/python/plugin/Music/Music.py`
* 说IP地址插件`SayIp`,位于:`/python/plugin/SayIp/SayIp.py`
等等,具体代码可以直接查看文件实现方法。
## **基类的使用方法**:
基类中已经使用了`__init__`类的初始化方法
如果在要继承模块中还需要使用`__init__`
需要在`__init__`方法中添加`super().__init__(msgQueue)`语句,如唤醒模块中:
>部分代码:
```python
from MsgProcess import MsgProcess, MsgType
class Awake(MsgProcess):
'''语音唤醒类'''
def __init__(self, msgQueue):
super().__init__(msgQueue)
self.awakeThread = None
self.socketFile = "/tmp/zimei-awake.sock"
self.awakeconfig = self.config['ApiConfig']['AwakeEngine']
def Start(self, message):
```
截图如下:
<img src="http://qiniucn.16302.com/64f9dde9343d8165a86df5a7829a431e" width="500"/>
## **继承基类后可使用的系统级的方法(函数):**
*****
**getConfig --- 重新读取一下系统配置**
*****
**参数**:无
**返回**:无
**功能**:执行此方法重新读取一下系统根目录下的config.yaml配置文件中的内容值并将最新的值赋值给**self.config**变量。
*****
**saveConfig --- 保存系统配置信息**
*****
**参数**:无
**返回**:无
**功能**:将当前**self.config**值保存到config.yaml文件中
*****
**send --- 消息发送(重点方法,使用频率最高)**
*****
**参数**:MsgType, Receiver, Data
**返回**:无
**功能**:各模块(进程)间通信方法,如唤醒模块被唤醒后告诉录音模块:你可以开始录音了,就可以使用此方法发送一个指令给录音模块。
**参数介绍:**
MsgType 消息类型,有以下几种:
```
Start = 1 # 启动
Pause = 2 # 暂停
Resume = 3 # 继续
Stop = 4 # 停止
Text = 5 # 文本
```
Receiver 消息接收者
```
接收者为模块名称,即继承了基类的模块名称,也就是class类名,如:唤醒模块就是:Awake
如果是插件就是插件名称,如音乐插件:Music
```
Data 消息数据,可以是字典类型,也可以字符串类型
```
Data 携带的是接收模块需要的数据,具体数据由各模块间约定,此参数也可以为空None
```
## **类的方法定义与重写**
先看一段代码示例代码:
```python
# 导入基类库、消息类型库
from MsgProcess import MsgProcess, MsgType
class HelloWorld(MsgProcess):
'''你好,世界'''
def __init__(self, msgQueue):
'''如果在插件或功能模块中使用__ini__方法,必须加下面的这方法,先调用基类中的方法'''
super().__init__(msgQueue)
def Start(self, message=None):
'''功能、插件入口,通常被用初始化插件入口使用'''
pass
def Text(self, message):
'''接收来自其他模块发送过来的消息类型为:MsgType.Text(文本)消息,再进行二次开发和业务逻辑实现'''
pass
def Pause(self, message=None):
'''接收消息类型为:MsgType.Pause(暂停)消息,实现暂停功能'''
pass
def Resume(self, message=None):
'''接收消息类型为:MsgType.Resume(继续)消息,实现继续功能'''
pass
def Stop(self, message=None):
'''接收消息类型为:MsgType.Stop(停止)消息,实现停止功能,定义默认为自动停止'''
self.__stop = True
```
- 关于自美智能系统
- 系统安装
- 方式一:镜像安装
- 方式二:源码安装
- 系统使用
- 配置设备上网
- 微信控制自美智能系统
- 系统内置功能的触发词
- 系统升级
- 手动在线升级
- 硬件设备
- 自美系统驱动板使用说明
- 自美智能系统魔镜配件附图
- LED灯控制
- 风扇接口
- 人体感应模块
- 开发者入口
- 如何启用开发者模式
- 基类(MsgProcess)介绍
- 插件开发
- 基础知识
- config.json配置文件
- 前端开发
- 移动端(微信小程序)开发
- 通讯协议(MQTT)
- 用户管理
- 插件控制按钮定义
- 无线网络设备(万能开关)
- 视频演示
- 功能使用演示视频集
- 功能开发教程视频集
- 树莓派相关知识
- 安装树莓派官方操作系统
- 无键盘、显示器配网和SSH
- 启用树莓派SSH和root用户登录
- 启用树莓派VNC远程桌面
- 自定义树莓派屏幕分辨率
- 扩展阅读技术文章
- 电子相册功能
- 调用系统opencv人脸识别标准库
- 语音触发式系统插件demo示例
- 插件触发机制
- 实现交互
- 实现视觉处理
- 霍尔磁力模块
- 无源蜂鸣器
- 火焰检测模块
- ky-028数字温度模块
- 光遮断器模块
- DS18B20温度模块
- 2021常见问题和人工帮助
- 更新日志