dlt645_0x93.go 987 B

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