/**
|
* 控制器文件
|
* 负责定期执行系统各驱动的循环操作,确保系统正常运行
|
*/
|
import log from '../dxmodules/dxLogger.js'
|
import std from '../dxmodules/dxStd.js'
|
import face from '../dxmodules/dxFace.js'
|
import bus from '../dxmodules/dxEventBus.js'
|
import driver from './driver.js'
|
|
/**
|
* 运行控制器
|
* 设置多个定时器,定期执行不同的循环任务
|
*/
|
function run() {
|
// 每5ms执行一次主循环
|
std.setInterval(() => {
|
try {
|
driver.watchdog.feed("controller", 30) // 喂狗,设置30秒超时
|
loop() // 执行主循环
|
} catch (error) {
|
log.error(error) // 记录错误
|
}
|
}, 5)
|
|
// 每500ms执行一次网络循环
|
std.setInterval(() => {
|
try {
|
driver.watchdog.feed("controller1", 30) // 喂狗,设置30秒超时
|
driver.net.loop() // 执行网络循环
|
} catch (error) {
|
log.error(error) // 记录错误
|
}
|
}, 500)
|
|
// 每1000ms执行一次NTP循环
|
std.setInterval(() => {
|
try {
|
driver.watchdog.feed("controller2", 30) // 喂狗,设置30秒超时
|
driver.ntp.loop() // 执行NTP循环
|
} catch (error) {
|
log.error(error) // 记录错误
|
}
|
}, 1000)
|
}
|
|
/**
|
* 启动控制器
|
*/
|
try {
|
run()
|
} catch (error) {
|
log.error(error)
|
}
|
|
/**
|
* 主循环函数
|
* 执行各驱动的循环操作
|
*/
|
function loop() {
|
driver.capturer.loop() // 执行摄像头循环
|
driver.face.loop() // 执行人脸识别循环
|
driver.nfc.loop() // 执行NFC循环
|
driver.mqtt.heartbeat() // 执行MQTT心跳
|
driver.gpiokey.loop() // 执行GPIO按键循环
|
}
|