| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Author: NiuJiuRu
- // Email: niujiuru@qq.com
- // Date: 2025-11-20
- package mcu_ctrl_board
- import (
- "fmt"
- "time"
- "hnyfkj.com.cn/rtu/linux/baseapp"
- )
- const MODULE_NAME = "MCUCtrlBoard"
- var (
- Board = &MCUCtrlBoard{
- OneEnvDataCh: make(chan *EnvSensorData, 1),
- ReqTakePhoCh: make(chan bool, 1),
- PwrWillOffCh: make(chan struct{}),
- }
- )
- // 定义控制板的结构体
- type MCUCtrlBoard struct {
- OneEnvDataCh chan *EnvSensorData // 单条环境数据
- ReqTakePhoCh chan bool // 请求开始拍照
- PwrWillOffCh chan struct{} // 通知即将掉电
- }
- // 定义传感器数据结构
- type EnvSensorData struct {
- NowTime string `json:"nowtm"` // 时间, 格式:YYYY-MM-DD HH:MM:SS
- Temperature string `json:"temperature"` // 温度, °C
- Humidity string `json:"humidity"` // 湿度, %RH
- WindSpeed string `json:"wind_speed"` // 风速, m/s
- WindDir string `json:"wind_dir"` // 风向, °
- Pressure string `json:"pressure"` // 大气压, hPa
- Voltage string `json:"voltage"` // 电压, V
- }
- // 传感器数据字符串化
- func (d EnvSensorData) String() string {
- return fmt.Sprintf("时间: %s, 温度: %s°C, 湿度: %s%%RH, 风速: %s m/s, 风向: %s°, 大气压: %s hPa, 电压: %s V",
- d.NowTime, d.Temperature, d.Humidity, d.WindSpeed, d.WindDir, d.Pressure, d.Voltage)
- }
- // 初始化控制板的串口
- func ModuleInit() bool {
- err := loadCfgParams()
- if err != nil {
- baseapp.Logger.Errorf("[%s] 加载MCU运行参数配置项失败: %v!!", MODULE_NAME, err)
- return false
- }
- var ret int
- for range 5 {
- if baseapp.IsExit1() {
- return false
- }
- ret, err = mcuCtrlBoard_ComInit()
- if ret == -1 {
- time.Sleep(1 * time.Second)
- continue
- } else {
- break
- }
- }
- if err != nil {
- baseapp.Logger.Errorf("[%s] 初始化与MCU控制板通信失败: %v!!", MODULE_NAME, err)
- }
- return true
- }
- // 释放掉控制板的串口
- func ModuleExit() {
- mcuCtrlBoard_ComExit()
- }
- // 通知数据板即将掉电
- func (board *MCUCtrlBoard) NotifyPwrWillOff() <-chan struct{} {
- return board.PwrWillOffCh
- }
|