dpv5

package
v0.0.0-...-e6c2143 Latest Latest
Warning

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

Go to latest
Published: May 12, 2023 License: GPL-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// SockUnkonw 未知socket类型
	SockUnkonw = iota
	// SockTml 终端socket类型
	SockTml
	// SockData 数据层socket类型
	SockData
	// SockClient 客户端socket类型
	SockClient
	// SockSdcmp 串口软件socket类型
	SockSdcmp
	// SockFwdcs 前端管理socket类型
	SockFwdcs
	// SockUpgrade 升级程序socket类型
	SockUpgrade
	// SockIisi 接口socket类型
	SockIisi
	// SockVb6 VB6 socket类型
	SockVb6
	// SockUDP UDP socket类型
	SockUDP
)
View Source
const (
	// SendLevelNormal 常规发送
	SendLevelNormal = iota
	// SendLevelHigh 插队发送
	SendLevelHigh
)
View Source
const (
	// DataTypeUnknow 未知数据类型
	DataTypeUnknow = iota
	// DataTypeBytes 字节数据类型
	DataTypeBytes
	// DataTypeString 字符串数据类型
	DataTypeString
	// DataTypeBase64 base64码数据类型
	DataTypeBase64
)
View Source
const (
	// JobSend 普通数据转发任务
	JobSend = iota
	// JobDo 执行任务
	JobDo
)
View Source
const (
	// TraUnknow 未知传输方式
	TraUnknow = iota
	// TraDirect 直接传输
	TraDirect
	// Tra485 通过设备485传输
	Tra485
)
View Source
const (

	// SendGpsAT 采集gps信息
	SendGpsAT = "AT+OPENAT=GPSINFO?\r"
	// JSONData data head
	JSONData = `{"head":{"mod":2,"src":1,"ver":1,"tver":1,"tra":1,"ret":1,"cmd":""},"args":{"ip":[],"port":0,"addr":[],"cid":1},"data":{}}`
)

Variables

View Source
var (
	// SendUDPKA udp心跳数据
	SendUDPKA = gopsu.Bytes("Х")
	// Send7004 上海路灯升级准备
	Send7004 = gopsu.String2Bytes("7E-70-18-00-00-00-04-00-57-4A-33-30-30-36-42-5A-2D-31-00-00-3C-00-CC-CC-CC-CC-CC-CC-80-42", "-")
	// Send7010 从终端复位模块
	Send7010 = gopsu.String2Bytes("7e-70-05-00-00-00-10-00-03-30-b2", "-")
	// Send3e3c09 复位模块
	Send3e3c09 = gopsu.String2Bytes("3e-3c-0c-0-30-30-30-30-30-30-30-30-30-30-30-09-58-c9", "-")
	// Send6813 电表读地址
	Send6813 = gopsu.String2Bytes("fe-fe-fe-fe-68-aa-aa-aa-aa-aa-aa-68-13-0-df-16", "-")
	// Send9050 单灯读版本
	Send9050 = gopsu.String2Bytes("7e-90-3-0-0-0-50-dc-6b", "-")
	// Send5a4a 招测光照度软件版本
	Send5a4a = gopsu.String2Bytes("7e-5a-5-4a-0-0-73-12", "-")
	// Send4d00 招测线路监测阻抗基准
	Send4d00 = gopsu.String2Bytes("7e-7-0-0-4d-1-1-0-34-1f-51", "-")
	// Send1800 开机申请应答
	Send1800 = gopsu.String2Bytes("7e-5-0-0-18-0-63-45-7c", "-")
	// Send1400 终端主动报警应答
	Send1400 = gopsu.String2Bytes("7e-5-0-0-14-0-6f-85-7a", "-")
	// Send1500 线路检测主动报警应答
	Send1500 = gopsu.String2Bytes("7e-5-0-0-15-0-6e-15-7a", "-")
	// Send2b00 招测终端序列号
	Send2b00 = gopsu.String2Bytes("7e-5-0-0-2b-0-50-f5-66", "-")
	// Send2000 选测
	Send2000 = gopsu.String2Bytes("7e-5-0-0-20-0-5b-c5-63", "-")
	// Send1300 招测时间
	Send1300 = gopsu.String2Bytes("7e-5-0-0-13-0-68-75-79", "-")
	// Send3200 招测周设置1-3
	Send3200 = gopsu.String2Bytes("7e-5-0-0-32-0-49-e5-6b", "-")
	// Send5900 招测周设置4-6
	Send5900 = gopsu.String2Bytes("7e-5-0-0-59-0-22-d5-58", "-")
	// Send6900 招测周设置7-8
	Send6900 = gopsu.String2Bytes("7e-5-0-0-69-0-12-d5-43", "-")
	// Send6600 招测节假日后4段
	Send6600 = gopsu.String2Bytes("7E-5-0-0-66-0-1d-a5-44", "-")
	// Send5a00 招测终端参数
	Send5a00 = gopsu.String2Bytes("7e-5-0-0-5a-0-21-65-59", "-")
	// Send5b00 招测检测参数
	Send5b00 = gopsu.String2Bytes("7e-5-0-0-5b-0-20-f5-59", "-")
	// Send5c00 招测软件版本
	Send5c00 = gopsu.String2Bytes("7e-5-0-0-5c-0-27-5-5a", "-")
	// Send5f00 召测终端参数k7-k8
	Send5f00 = gopsu.String2Bytes("7e-5-0-0-5f-0-24-b5-5b", "-")
	// SendJY58 江阴节能主报应答
	SendJY58 = gopsu.String2Bytes("7e-16-0-0-37-7e-d0-1-58-f7-0-0-0-0-0-0-0-0-0-0-0-0-0-5f-33-81", "-")
	// SendEsu1c00 节电器主动报警应答
	SendEsu1c00 = gopsu.String2Bytes("7e-d-0-0-37-7e-80-1-1c-19-bd-0-3-35-bd", "-")
	// SendEsu1300 节电器选测
	SendEsu1300 = gopsu.String2Bytes("7e-d-0-0-37-7e-80-1-13-59-b9-0-48-75-8a", "-")
	// SendEsu2600 节电器gprs主动告警应答
	SendEsu2600 = gopsu.String2Bytes("7e-b-0-0-1b-7e-80-1-26-99-ae-0-80-b0-d5", "-")
	// SendAhhf6810 安徽合肥版本召测
	SendAhhf6810 = gopsu.String2Bytes("68-10-0-68-0-0-0-0-0-0-0-0-9-10-0-0-1-0-0-0-f7-b2-56", "-")
	// SendUpg0500 远程升级用版本招测
	SendUpg0500 = gopsu.String2Bytes("7e-fe-05-00-00-00-05-00-00-e8-9b", "-")
	// SendGps 采集gps信息
	SendGps = gopsu.String2Bytes("7e-59-4-0-0-0-4-1-cd-22", "-")
	// SendElu5d00 漏电直连读取参数
	SendElu5d00 = gopsu.String2Bytes("7e-62-02-00-5d-73-8b", "-")
	// SendElu5900 漏电直连读1-4路数据
	SendElu5900 = gopsu.String2Bytes("7e-62-02-00-59-72-48", "-")
	// SendERtu6900 漏电直连8路2级数据
	SendERtu6900 = gopsu.String2Bytes("7e-62-02-00-69-72-5c", "-")
	// SendERtu6d00 漏电直连召测运行参数
	SendERtu6d00 = gopsu.String2Bytes("7e-62-02-00-6d-73-9f", "-")
	// SendXHLocker 咸亨门锁查状态
	SendXHLocker = gopsu.String2Bytes("7e-e0-00-00-00-00-11-00-2b-3d", "-")
	// SendIMEI 读取模块imei
	SendIMEI = gopsu.String2Bytes("3e-3c-0f-00-30-30-30-30-30-30-30-30-30-30-30-01-20-04-02-a7-d8", "-")
	// SendIelu0126 智能漏电选测
	SendIelu0126 = gopsu.String2Bytes("7e-01-05-00-00-00-26-00-00-56-55", "-")
	// NorcClis NorcClis
	NorcClis []int64 // = make([]int64, 0)
	// LegalIPs LegalIPs
	LegalIPs []int64
	// CheckLegalIP  CheckLegalIP
	CheckLegalIP = false
	// AnsJSON append json format back
	AnsJSON = false
)

Functions

func BuildCommand

func BuildCommand(data []byte, addr int64, area string, prm, fun, crypt, ver, afn, con, seq byte) []byte

BuildCommand 创建命令 ll: 长度 area: 区域码 addr: 地址 prm: 启动标志位0-应答,1-主动下行 fun: 链路层功能码 crypt: 是否加密0 为不加密(身份认∕否认(证及密钥协商用到),调整1 代表明文加 MAC,2 代表密文加 MAC,3 密码信封(证书方式) ver: 版本,1 afn: 应用层功能码 seq: 序号,中间层提供

func CalculateRC

func CalculateRC(d []byte) byte

CalculateRC 计算校验值

func CodePb2

func CodePb2(m *msgctl.MsgWithCtrl) []byte

CodePb2 code msgctl

func DoCommand

func DoCommand(ver, tver, tra byte, addr int64, cid int64, cmd string, data []byte, br, rc byte) []byte

DoCommand 将数据组装为设备指令 Args:

ver: 协议版本
tver:内部协议版本
tra:传输方式
addr:设备物理地址
cid:485方式时子设备物理地址
cmd:协议命令
data:数据
br:波特率
rc:校验位

func GetHelloMsg

func GetHelloMsg() *msgctl.MsgWithCtrl

GetHelloMsg send who is

func GetServerTimeMsg

func GetServerTimeMsg(addr int64, t int, oneMoreByte bool, nocmd bool) []byte

GetServerTimeMsg 按服务器时间组装对时命令 t:设备时间格式1-rtu,2-slu,3-vslu,4-esu oneMoreByte:是否携带秒字节 nocmd:是否需要组装为完整命令

func MakeAddr

func MakeAddr(addr int64, area string) []byte

MakeAddr 组装国标协议格式地址

func MsgCtlFromB64Str

func MsgCtlFromB64Str(s string) *msgctl.MsgWithCtrl

MsgCtlFromB64Str 从base64字符串解析pb2格式数据

func MsgCtlFromBytes

func MsgCtlFromBytes(b []byte) *msgctl.MsgWithCtrl

MsgCtlFromBytes decode msgcgtl Args:

b:pb2序列化数据

func Single2Tribytes

func Single2Tribytes(b float64) []byte

Single2Tribytes 量程转浮点参数 输入:量程,输出:幂指数,尾数高位,尾数低位

Types

type Fwd

type Fwd struct {
	DataMsg     []byte       // 发送数据
	DataMQ      []byte       // zmq推送数据
	DataCmd     string       // 指令命令
	DataDst     string       // for tml, something like "wlst-rtu-1"
	DataPT      int32        // command protect time
	DataSP      byte         // data send level 0-normal, 1-high
	DataType    byte         // 1-hex,2-string
	DstType     byte         // 0-unknow,1-tml,2-data,3-client,4-sdcmp,5-fwdcs,6-upgrade,7-iisi,8-vb,9-udp
	DstIP       int64        // 目标ip
	DstIMEI     int64        // 目标imei
	DataUDPAddr *net.UDPAddr // for udp only
	Tra         byte         // 1-socket, 2-485
	Addr        int64        // 设备地址
	Ex          string       // 错误信息
	Src         string       // 原始数据
	Job         byte         // 0-just send,1-need do something else
	Remark      string       // 备注信息,或其他想要传出的数据
}

Fwd 数据解析结果需发送内容结构体

type Rtb

type Rtb struct {
	Do         []*Fwd // 需要进行的操作
	RemoteAddr string // 远程地址
	CliID      uint64 // socket id
	Unfinish   []byte // 未完结数据
	Ex         string // 错误信息
	Src        string // 原始数据
}

Rtb 数据解析结果

func ClassifyCtlData

func ClassifyCtlData(d []byte, port *int) (r *Rtb)

ClassifyCtlData 中间层等数据解析

func ClassifyCtlDataNoB64

func ClassifyCtlDataNoB64(d []byte, port *int) (r *Rtb)

ClassifyCtlDataNoB64 ClassifyCtlDataNoB64

func ClassifyCtrlDataGrpc

func ClassifyCtrlDataGrpc(msg *msgctl.MsgWithCtrl, port *int) (r *Rtb)

ClassifyCtrlDataGrpc 解析grpc数据

func ClassifyErtuData

func ClassifyErtuData(d []byte, ip *int64, portlocal, portremote *int, checkrc *bool, oldaddr int64, sims int64) (r *Rtb)

ClassifyErtuData ertu数据解析 Args:

rawdata: base64原始数据

Return:

r: 处理反馈结果

func ClassifyNBSluData

func ClassifyNBSluData(d []byte, ip *int64, portlocal, portremote *int, checkrc *bool, oldaddr int64, imei, dataflag string) (r *Rtb)

ClassifyNBSluData NB大平台单灯数据解析

r: 处理反馈结果

func ClassifyTmlData

func ClassifyTmlData(d []byte, ip *int64, portlocal, portremote *int, checkrc *bool, oldaddr int64) (r *Rtb)

ClassifyTmlData 分类数据解析 Args:

	d: 原始数据
	ip:数据来源ip
	port:数据服务端口
 checkrc:是否进行数据校验

Return:

r: 处理反馈结果

func ClassifyTmlDataNB

func ClassifyTmlDataNB(rawdata string) (r *Rtb)

ClassifyTmlDataNB NB数据解析 Args:

rawdata: base64原始数据

Return:

r: 处理反馈结果

Jump to

Keyboard shortcuts

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