protocol

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// 报文前缀标识与结束标识符
	PrefixID = []byte{'#', '#'}
	SuffixID = []byte{'\r', '\n'}
)
View Source
var DataTag = map[byte]string{
	'N': "在线监控仪器仪表工作正常",
	'P': "电源故障",
	'p': "电源故障",
	'B': "监测仪器发生故障",
	'b': "监测仪器发生故障",
	'D': "数据采集通道关闭",
	'd': "数据采集通道关闭",
	'C': "监测仪处于校准状态",
	'c': "监测仪处于校准状态",
	'H': "数据超出仪器量程上限",
	'h': "数据超出仪器量程上限",
	'L': "数据低于仪器量程上限",
	'l': "数据低于仪器量程上限",
	']': "数据高于用户自定义设定的上限",
	')': "数据高于用户自定义设定的上限",
	'[': "数据低于用户自定义设定的上限",
	'(': "数据低于用户自定义设定的上限",
	'F': "在线监控仪器仪表停运",
}

dataTag 数据标签对照表

Functions

func CRCCheckout

func CRCCheckout(msg interface{}) uint16

CRCCheckout CRC16消息校验

func RegisterEntity

func RegisterEntity(typ uint16, entity Entity)

func RemoveEntity

func RemoveEntity(typ uint16)

Types

type Body

type Body map[string]DataPoint

Body 检测因子

type CNTyp

type CNTyp uint16

CNTyp 命令编码类型

const (
	// 初始化命令
	HSetTimeoutRepeats CNTyp = 1000 // 设置超时时间及重发次数
	HGetSlaveTime      CNTyp = 1011 // 提取现场机时间
	SupDate            CNTyp = 1011 // 上传现场机时间
	HSetSlaveTime      CNTyp = 1012 // 设置现场机时间
	SSetTimeReq        CNTyp = 1013 // 现场机时间校准请求
	HGetRealInterval   CNTyp = 1061 // 提取实时数据间隔
	SupRealInterval    CNTyp = 1061 // 上传实时数据间隔
	HSetRealInterval   CNTyp = 1062 // 设置实时数据间隔
	HGetMinuteInterval CNTyp = 1063 // 提取分钟数据间隔
	SupMinuteInterval  CNTyp = 1063 // 上传分钟数据间隔
	HSetMinuteInterval CNTyp = 1064 // 设置分钟数据间隔
	HSetSlaveRestart   CNTyp = 1070
	HResetSlavePasswd  CNTyp = 1072 // 设置现场机密码

	// 实时数据指令
	HGetRealTimeData  CNTyp = 2011 // 取污染物实时数据
	SupRealTimeData   CNTyp = 2011 // 上传污染物实时数据
	HStopRealTimeData CNTyp = 2012 // 停止察看污染物实时数据
	// 设备状态
	HGetDevStat  CNTyp = 2021 // 取设备运行状态数据
	SupDevStat   CNTyp = 2021 // 上传设备运行状态数据
	HStopDevStat CNTyp = 2022 // 停止察看设备运行状态
	// 日数据
	HGetDayHistory           CNTyp = 2031 // 取污染物日历史数据
	SupDayHistory            CNTyp = 2031 // 上传污染物日历史数据
	HGetDevRunTimeDayHistory CNTyp = 2041 // 取设备运行时间日历史数据
	SupDevRunTimeDayHistory  CNTyp = 2041 // 上传设备运行时间日历史数据
	// 分钟数据
	HGetMinHistory CNTyp = 2051 // 取污染物分钟数据
	SupMinHistory  CNTyp = 2051 // 上传污染物分钟数据
	// 小时数据
	HGetHourHistory CNTyp = 2061 // 取污染物小时数据
	SupHourHistory  CNTyp = 2061 // 上传污染物小时数据
	// 其它数据
	SupSCYupTime CNTyp = 2081 // 上传数采仪开机时间
	// 控制指令
	HZeroCal      CNTyp = 3011 // 零点校准量程校准
	HRealSampling CNTyp = 3012 // 即时采样
	HCleanStart   CNTyp = 3013 // 启动清洗/反吹
	HCompSampling CNTyp = 3014 // 比对采样
	HKeepSample   CNTyp = 3015 // 超标留样
	// 设备信息指令
	HGetDevID          CNTyp = 3019 // 提取设备唯一标识
	SupDevID           CNTyp = 3019 // 上传设备唯一标识
	HGetSlaveInfo      CNTyp = 3020 // 提取现场机信息
	SupSaveInfo        CNTyp = 3020 // 上传现场机信息
	HSetSlaveParameter CNTyp = 3021 // 设置现场机参数
	// 上位机与现场机交互指令
	SResponse   CNTyp = 9011 // 请求应答
	SExecResult CNTyp = 9012 // 执行结果
	HNoticeACK  CNTyp = 9013 // 通知应答
	HDataACK    CNTyp = 9014 // 数据应答
	HGetConfig  CNTyp = 9017
	HSetConfig  CNTyp = 9018
	SPutConfig  CNTyp = 9018
)

CN (Host command and slave req command)

type DataPoint

type DataPoint struct {
	Cou  float64 `json:"cou"`  // 累计值
	Min  float64 `json:"min"`  // 最小值
	Avg  float64 `json:"avg"`  // 平均值
	Max  float64 `json:"max"`  // 最大值
	Flag byte    `json:"flag"` // 数据标记
}

DataPoint 数据点

type Entity

type Entity interface {
	Encode() ([]byte, error)
	Decode(data string) error
}

Entity Body实体

type Header struct {
	QN     time.Time
	ST     uint16
	CN     uint16
	MN     string
	PW     string
	Flag   byte
	Packet *Packet
}

func (*Header) Decode

func (header *Header) Decode(data string) error

Decode 包头解码

func (*Header) Encode

func (header *Header) Encode() ([]byte, error)

Encode 包头编码

func (*Header) GetCN

func (header *Header) GetCN() uint16

func (*Header) GetFlag

func (header *Header) GetFlag() byte

func (*Header) GetID

func (header *Header) GetID() string

func (*Header) GetMN

func (header *Header) GetMN() string

func (*Header) GetPW

func (header *Header) GetPW() string

func (*Header) GetQN

func (header *Header) GetQN() time.Time

func (*Header) GetST

func (header *Header) GetST() uint16

func (*Header) HasPacket

func (header *Header) HasPacket() bool

HasPacket 是否有分包

func (*Header) NeedAck

func (header *Header) NeedAck() bool

是否需要确认

type Message

type Message struct {
	Header Header
	Body   Entity
}

func (*Message) Decode

func (message *Message) Decode(data []byte) error

Decode 消息解码

func (*Message) Encode

func (message *Message) Encode() ([]byte, error)

Encode 消息编码

type MonitorAtmospheric

type MonitorAtmospheric struct {
	TimeBody
	Body
}

MonitorAtmospheric 气监测因子编码表

func (*MonitorAtmospheric) Decode

func (entity *MonitorAtmospheric) Decode(data string) error

Decode 数据解码

func (*MonitorAtmospheric) Encode

func (entity *MonitorAtmospheric) Encode() ([]byte, error)

type Packet

type Packet struct {
	PNUM uint32
	PNO  uint32
}

type TimeBody

type TimeBody struct {
	DataTime time.Time `json:"dataTime,omitempty"`
	NoTime   bool      `json:"noTime"`
}

TimeBody CP基本字段

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL