dlt645_0x93.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package protocol
  2. import (
  3. "encoding/hex"
  4. "github.com/gogf/gf/os/glog"
  5. )
  6. type Dlt_0x93 struct {
  7. //接收表号
  8. DeviceAddress []byte
  9. //表号
  10. DeviceID string
  11. //当前视在功率
  12. ApparentPower float64
  13. }
  14. func (e *Dlt_0x93) MsgID() MsgID {
  15. return ReadAddress
  16. }
  17. //func (entity *Dlt_0x93) GetDeviceAddress() DeviceAddress {
  18. // return entity.DeviceAddress
  19. //}
  20. func (e *Dlt_0x93) Encode(ctx *PacketContext) ([]byte, error) {
  21. writer := NewWriter()
  22. // 接收符号
  23. writer.Write([]byte{0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 0x13, 0x00, 0xDF, 0x16})
  24. return writer.Bytes(), nil
  25. }
  26. func (e *Dlt_0x93) Decode(ctx *PacketContext, dataByte []byte) (data Data, err error) {
  27. e.DeviceAddress = dataByte[1:7]
  28. ctx.SetReceiveAddress(dataByte[1:7])
  29. var bytea []byte
  30. bytea = append(bytea, dataByte[1:7]...)
  31. for i, j := 0, len(bytea)-1; i < j; i, j = i+1, j-1 {
  32. bytea[i], bytea[j] = bytea[j], bytea[i]
  33. }
  34. e.DeviceID = hex.EncodeToString(bytea)
  35. ctx.SetDeviceId(e.DeviceID)
  36. glog.Debugf("表号读取成功:%s", e.DeviceID)
  37. return data, nil
  38. }