package main import ( "flag" "log" "rain_monitor/api" "rain_monitor/db" "rain_monitor/modbus" "rain_monitor/scheduler" ) var ( dbHost = flag.String("db-host", "8.134.185.53", "数据库主机地址") dbPort = flag.Int("db-port", 3306, "数据库端口") dbUser = flag.String("db-user", "remote", "数据库用户名") dbPassword = flag.String("db-password", "root", "数据库密码") dbName = flag.String("db-name", "rain_monitor", "数据库名称") ) func main() { // 解析命令行参数 flag.Parse() // 初始化数据库连接 dbConfig := db.DBConfig{ Host: *dbHost, Port: *dbPort, User: *dbUser, Password: *dbPassword, DBName: *dbName, } log.Println("正在连接数据库...") err := db.InitDB(dbConfig) if err != nil { log.Fatalf("数据库初始化失败: %v", err) } defer db.CloseDB() log.Println("数据库连接成功") // 启动TCP服务器 log.Println("正在启动TCP服务器...") go modbus.StartTCPServer() // 启动定时任务调度器 log.Println("正在启动定时任务调度器...") go scheduler.StartScheduler() // 启动Web服务器 log.Println("正在启动Web服务器...") api.StartWebServer() // 这个函数会阻塞主线程 }