package main import ( "fmt" "time" gps "hnyfkj.com.cn/rtu/bxs-sy/air530z" modem "hnyfkj.com.cn/rtu/bxs-sy/air720u" "hnyfkj.com.cn/rtu/bxs-sy/baseapp" mcu "hnyfkj.com.cn/rtu/bxs-sy/mcu_ctrl_board" takephoto "hnyfkj.com.cn/rtu/bxs-sy/mvs_takephoto" "hnyfkj.com.cn/rtu/bxs-sy/netmgr" "hnyfkj.com.cn/rtu/bxs-sy/reporter" ) func main() { if baseapp.IsArgsParam("-h") { help() return } if baseapp.IsArgsParam("-v") { fmt.Println("程序版本:", baseapp.Version, "\n构建时间:", baseapp.BuildTime) return } baseapp.ModuleInit() baseapp.SingleInstanceRun() // 异步非阻塞 baseapp.Logger.Infof("程序版本: %s 构建时间: %s\n程序开始运行...", baseapp.Version, baseapp.BuildTime) // 01, 初始化卫星定位模块 gps.ModuleInit() // 02, 初始化4G调制解调器 if !modem.ModuleInit(false) { goto end_p } // 03, 初始化网络管理模块 netmgr.ModuleInit() netmgr.WaitAllOK(time.Duration(10) * time.Second) // 等待联网成功和NTP时间同步成功 // 04, 初始化相机拍照模块 if !takephoto.ModuleInit() { goto end_p } // 05, 初始化单片机控制板 if !mcu.ModuleInit() { goto end_p } // 06, 后台服务器业务交互 if !reporter.ModuleInit() { goto end_p } // 07, 阻塞等待退出信号量 select { case <-baseapp.IsExit2(): case <-mcu.NotifyPwrWillOff(): } // 08, 退出程序并释放资源 end_p: reporter.ModuleExit() mcu.ModuleExit() modem.ModuleExit() gps.ModuleExit() baseapp.Logger.Info("程序退出") baseapp.ExitLogger() // 安全的关闭日志模块 baseapp.SafeExit() // 安全的关闭退出程序 } func help() { h := ` -h 显示帮助提示 -v 当前程序版本 ` fmt.Println(h) }