modbus.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package helper
  2. import (
  3. "city_chips/pkg/log"
  4. "fmt"
  5. "time"
  6. "github.com/simonvetter/modbus"
  7. "github.com/spf13/viper"
  8. )
  9. func ModBus(conf *viper.Viper, logger *log.Logger) error {
  10. var client *modbus.ModbusClient
  11. var err error
  12. //创建并配置Modbus客户端
  13. client, err = modbus.NewClient(&modbus.ClientConfiguration{
  14. URL: conf.GetString("Modbus.url"),
  15. Timeout: 3 * time.Second,
  16. })
  17. if err != nil {
  18. logger.Error(fmt.Errorf("创建Modbus客户端失败: %v", err).Error())
  19. return err
  20. }
  21. defer client.Close()
  22. err = client.Open()
  23. if err != nil {
  24. logger.Error(fmt.Errorf("连接打开失败: %v", err).Error())
  25. return err
  26. }
  27. // LatestData := make(map[int]Temperature)
  28. // LatestDatas = nil
  29. // for {
  30. // for i := 1; i <= 6; i++ {
  31. // client.SetUnitId(uint8(i))
  32. // temperature, err := client.ReadRegister(0, modbus.INPUT_REGISTER)
  33. // humidity, err := client.ReadRegister(1, modbus.INPUT_REGISTER)
  34. // if err != nil {
  35. // simple_zap.WithCtx(context.Background()).Sugar().Error(err, "读取失败")
  36. // break
  37. // }
  38. // //fmt.Printf("设备:%v 温度: %v\n", i, int16(temperature))
  39. // //fmt.Printf("设备:%v 湿度: %v\n", i, int16(humidity))
  40. // LatestData[i] = Temperature{
  41. // SlaveID: i,
  42. // Temperature: float64(temperature) / 10,
  43. // Humidity: float64(humidity) / 10,
  44. // UploadTime: Time(time.Now()),
  45. // }
  46. // }
  47. // LatestDatas = LatestData
  48. // }
  49. return nil
  50. }