package helper import ( "city_chips/pkg/log" "fmt" "time" "github.com/simonvetter/modbus" "github.com/spf13/viper" ) func ModBus(conf *viper.Viper, logger *log.Logger) error { var client *modbus.ModbusClient var err error //创建并配置Modbus客户端 client, err = modbus.NewClient(&modbus.ClientConfiguration{ URL: conf.GetString("Modbus.url"), Timeout: 3 * time.Second, }) if err != nil { logger.Error(fmt.Errorf("创建Modbus客户端失败: %v", err).Error()) return err } defer client.Close() err = client.Open() if err != nil { logger.Error(fmt.Errorf("连接打开失败: %v", err).Error()) return err } // LatestData := make(map[int]Temperature) // LatestDatas = nil // for { // for i := 1; i <= 6; i++ { // client.SetUnitId(uint8(i)) // temperature, err := client.ReadRegister(0, modbus.INPUT_REGISTER) // humidity, err := client.ReadRegister(1, modbus.INPUT_REGISTER) // if err != nil { // simple_zap.WithCtx(context.Background()).Sugar().Error(err, "读取失败") // break // } // //fmt.Printf("设备:%v 温度: %v\n", i, int16(temperature)) // //fmt.Printf("设备:%v 湿度: %v\n", i, int16(humidity)) // LatestData[i] = Temperature{ // SlaveID: i, // Temperature: float64(temperature) / 10, // Humidity: float64(humidity) / 10, // UploadTime: Time(time.Now()), // } // } // LatestDatas = LatestData // } return nil }