| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package iotStruct
- import (
- "log"
- "unicode/utf8"
- )
- // DTU管理命令
- const (
- CmdRegister = iota // 注册
- CmdHeartBeat // 心跳
- CmdCollect // 采集
- )
- type DTUManageCmd struct {
- SN string `json:"sn"`
- Cmd int `json:"cmd"`
- Data []byte `json:"data"`
- }
- // DmcUnmarshal 解析DTU上报
- // 注册和心跳格式:注册包@202402200322 心跳包 $202402200322
- // SN长度为8-16个字符
- func (dmc *DTUManageCmd) DmcUnmarshal(data []byte) {
- size := utf8.RuneCount(data)
- log.Println("DTU采集:", data)
- // SN 长度在 8-16个字符 (注册包在9-17个字符)
- if size > 8 && size < 18 {
- if data[0] == '@' {
- dmc.Cmd = CmdRegister
- dmc.SN = string(data[1:])
- return
- } else if data[0] == '$' {
- dmc.Cmd = CmdHeartBeat
- dmc.SN = string(data[1:])
- return
- }
- }
- dmc.Data = data
- dmc.Cmd = CmdCollect
- }
|