## **基類介紹**:
基類文件位于自美系統目錄`/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常見問題和人工幫助
- 更新日志