lgq
4 天以前 081f12a52906abe6c2d139fdc144135978681009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
 * 控制器文件
 * 负责定期执行系统各驱动的循环操作,确保系统正常运行
 */
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按键循环
}