devmgr.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package util
  2. import (
  3. "smart_tunnel_edge/protocol/envSensor"
  4. "smart_tunnel_edge/util/config"
  5. "smart_tunnel_edge/util/logger"
  6. "sync"
  7. "time"
  8. )
  9. var mu sync.Mutex
  10. func StartDeviceCollection(dev *config.EnvDev) {
  11. coverTime := dev.TaskTime
  12. ticker := time.NewTicker(time.Duration(coverTime) * time.Minute)
  13. defer ticker.Stop()
  14. for {
  15. select {
  16. case <-ticker.C:
  17. if dev.WaitTime > 0 {
  18. time.Sleep(time.Duration(dev.WaitTime) * time.Second)
  19. }
  20. //获取指令
  21. dataPack := envSensor.DataPack{Address: dev.DevAddress, Start: []byte{0x01, 0xF8}, DataLen: []byte{0x00, 0x08}}
  22. if dev.Name == "光传感器" {
  23. dataPack = envSensor.DataPack{Address: dev.DevAddress, Start: []byte{0x00, 0x06}, DataLen: []byte{0x00, 0x01}}
  24. }
  25. buffer := dataPack.GetEnvGatherCommand()
  26. mu.Lock()
  27. port, err := GetSerialPort(dev.SerialId)
  28. if err != nil {
  29. logger.Logger.Infof(err.Error())
  30. continue
  31. }
  32. write, err := port.Write(buffer.Bytes())
  33. mu.Unlock()
  34. if write < 0 && err != nil {
  35. logger.Logger.Errorf("设备:%v采集数据失败,错误:%v", dev.Sn, err)
  36. continue
  37. }
  38. }
  39. }
  40. }
  41. // 采集方法
  42. //func EnvGather(address string) {
  43. //
  44. //}