Documentation
¶
Index ¶
- Constants
- Variables
- func CodePb2(m *msgctl.MsgWithCtrl) []byte
- func CodePb2NB(m *msgnb.MsgNBOpen) []byte
- func DoCommand(ver, tver, tra byte, addr int64, cid int32, cmd string, data []byte, ...) []byte
- func GetHelloMsg() *msgctl.MsgWithCtrl
- func GetIMEIorSIM(data []string, idx int) string
- func GetServerTimeMsg(addr int64, t int, oneMoreByte bool, nocmd bool) []byte
- func MsgCtlFromB64Str(s string) *msgctl.MsgWithCtrl
- func MsgCtlFromBytes(b []byte) *msgctl.MsgWithCtrl
- func MsgFromBytes(b []byte, pb proto.Message) proto.Message
- func Single2Tribytes(b float64) []byte
- type DataProcessor
- func (dp *DataProcessor) BuildCat1(data []byte, addr int64, dev, idx, crypt, ver, afn, seq, prm int32) []byte
- func (dp *DataProcessor) BuildCommand(data []byte, addr int64, prm, fun, crypt, ver, afn, con, seq, pfc int32, ...) []byte
- func (dp *DataProcessor) CalculateRC(d []byte) byte
- func (dp *DataProcessor) MakeAddr(addr int64, area string) []byte
- func (dp *DataProcessor) ProcessCat1(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessCtl(b *[]byte) (lstf []*Fwd)
- func (dp *DataProcessor) ProcessCtlCat1(b *[]byte) (lstf []*Fwd)
- func (dp *DataProcessor) ProcessDGSensor(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessGBOpen(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessOpen(b *[]byte) (lstf []*Fwd)
- func (dp *DataProcessor) ProcessTml(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessWater(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessWhGBOpen(d []byte) (r *Rtb)
- func (dp *DataProcessor) ProcessWhOpen(b *[]byte) (lstf []*Fwd)
- func (dp *DataProcessor) ProcessYfDry(d []byte) (r *Rtb)
- func (dp *DataProcessor) Reset()
- type Fwd
- type Rtb
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", "-") // Send3e3c01 读取模块地址 Send3e3c01 = gopsu.String2Bytes("3e-3c-0f-0-30-30-30-30-30-30-30-30-30-30-30-01-10-01-00-25-46", "-") // 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", "-") // SendERtu6900 漏电直连8路2级数据 SendERtu6900 = gopsu.String2Bytes("7e-62-02-00-69-72-5c", "-") // SendIMEI 读取模块imei和iccid SendIMEI = gopsu.String2Bytes("3e-3c-0f-00-30-30-30-30-30-30-30-30-30-30-30-01-20-05-02-a6-48", "-") // SendXHLocker 咸亨门锁查状态 SendXHLocker = gopsu.String2Bytes("7e-e0-00-00-00-00-11-00-2b-3d", "-") // SendYfDry 远帆除湿 SendYfDry = gopsu.String2Bytes("01-03-00-01-00-01-d5-ca", "-") // SendDCRtu702b 直流终端选测 SendDCRtu702b = gopsu.String2Bytes("7e-70-05-00-00-00-2b-00-00-01-7e", "-") // SendIelu0126 智能漏电选测 SendIelu0126 = gopsu.String2Bytes("7e-01-05-00-00-00-26-00-00-56-55", "-") // SendWater 水浸检测 SendWater = gopsu.Bytes(`{"CMD":"data"}`) // Resp0902 登录/心跳应答 Resp0902 = gopsu.String2Bytes("68 0E 00 0E 00 68 0B 01 01 12 04 00 00 00 60 00 00 01 00 02 86 16", " ") // DevMap 设备字典 DevMap = &devMap{devList: make(map[string]*Fwd)} )
Functions ¶
func DoCommand ¶
func DoCommand(ver, tver, tra byte, addr int64, cid int32, cmd string, data []byte, br, rc byte, cid64 int64) []byte
DoCommand 将数据组装为设备指令 Args:
ver: 协议版本 tver:内部协议版本 tra:传输方式 addr:设备物理地址 cid:485方式时子设备物理地址 cmd:协议命令 data:数据 br:波特率 rc:校验位
func GetServerTimeMsg ¶
GetServerTimeMsg 按服务器时间组装对时命令 Args:
t:设备时间格式1-rtu,2-slu,3-vslu,4-esu oneMoreByte:是否携带秒字节 nocmd:是否需要组装为完整命令
func MsgCtlFromB64Str ¶
func MsgCtlFromB64Str(s string) *msgctl.MsgWithCtrl
MsgCtlFromB64Str 从base64字符串解析pb2格式数据
func MsgCtlFromBytes ¶
func MsgCtlFromBytes(b []byte) *msgctl.MsgWithCtrl
MsgCtlFromBytes decode MsgWithCtrl Args:
b:pb2序列化数据
func Single2Tribytes ¶
Single2Tribytes 量程转浮点参数 输入:量程,输出:幂指数,尾数高位,尾数低位
Types ¶
type DataProcessor ¶
type DataProcessor struct { // 日志 Logger logger.Logger // VerInfo Verbose *verboseInfo // RemoteIP 远端ip RemoteIP string // imei Imei string // sim no Sim string // AreaCode 区域码 AreaCode string // DevID 设备id DevID string // PhyID PhyID int64 // LocalPort 本地监听端口 LocalPort int // CheckRC 进行终端数据校验 CheckRC bool // TimerNoSec 对时无秒字节 TimerNoSec bool // ec1 Ec1 byte // ec2 Ec2 byte }
DataProcessor 数据处理
func (*DataProcessor) BuildCat1 ¶
func (dp *DataProcessor) BuildCat1(data []byte, addr int64, dev, idx, crypt, ver, afn, seq, prm int32) []byte
BuildCat1 创建命令
addr: 地址 prm: 启动标志位0-应答,1-主动下行 fun: 链路层功能码 crypt: 是否加密0 为不加密(身份认∕否认(证及密钥协商用到),调整1 代表明文加 MAC,2 代表密文加 MAC,3 密码信封(证书方式) ver: 版本,1 afn: 应用层功能码 con: 是否需要设备应答0-不需要,1-需要 seq: 序号,中间层提供 area: 区域码
func (*DataProcessor) BuildCommand ¶
func (dp *DataProcessor) BuildCommand(data []byte, addr int64, prm, fun, crypt, ver, afn, con, seq, pfc int32, area string) []byte
BuildCommand 创建命令
addr: 地址 prm: 启动标志位0-应答,1-主动下行 fun: 链路层功能码 crypt: 是否加密0 为不加密(身份认∕否认(证及密钥协商用到),调整1 代表明文加 MAC,2 代表密文加 MAC,3 密码信封(证书方式) ver: 版本,1 afn: 应用层功能码 con: 是否需要设备应答0-不需要,1-需要 seq: 序号,中间层提供 area: 区域码
func (*DataProcessor) CalculateRC ¶
func (dp *DataProcessor) CalculateRC(d []byte) byte
CalculateRC 计算校验值
func (*DataProcessor) MakeAddr ¶
func (dp *DataProcessor) MakeAddr(addr int64, area string) []byte
MakeAddr 组装国标协议格式地址
func (*DataProcessor) ProcessCat1 ¶
func (dp *DataProcessor) ProcessCat1(d []byte) (r *Rtb)
ProcessCat1 处理cat1协议
func (*DataProcessor) ProcessCtl ¶
func (dp *DataProcessor) ProcessCtl(b *[]byte) (lstf []*Fwd)
ProcessCtl 处理五零盛同 msgwithctrl数据
func (*DataProcessor) ProcessCtlCat1 ¶
func (dp *DataProcessor) ProcessCtlCat1(b *[]byte) (lstf []*Fwd)
ProcessCtlCat1 处理CAT1协议
func (*DataProcessor) ProcessDGSensor ¶
func (dp *DataProcessor) ProcessDGSensor(d []byte) (r *Rtb)
ProcessDGSensor 处理灯杆传感器数据
func (*DataProcessor) ProcessGBOpen ¶
func (dp *DataProcessor) ProcessGBOpen(d []byte) (r *Rtb)
ProcessGBOpen 处理国标协议
func (*DataProcessor) ProcessOpen ¶
func (dp *DataProcessor) ProcessOpen(b *[]byte) (lstf []*Fwd)
ProcessOpen 处理五零盛同国标协议
func (*DataProcessor) ProcessTml ¶
func (dp *DataProcessor) ProcessTml(d []byte) (r *Rtb)
ProcessTml 终端数据解析 Args:
d: 原始数据 ip:数据来源ip port:数据服务端口 checkrc:是否进行数据校验
Return:
r: 处理反馈结果
func (*DataProcessor) ProcessWater ¶
func (dp *DataProcessor) ProcessWater(d []byte) (r *Rtb)
ProcessWater 处理水浸上行数据
func (*DataProcessor) ProcessWhGBOpen ¶
func (dp *DataProcessor) ProcessWhGBOpen(d []byte) (r *Rtb)
ProcessWhGBOpen 处理武汉国标协议
func (*DataProcessor) ProcessWhOpen ¶
func (dp *DataProcessor) ProcessWhOpen(b *[]byte) (lstf []*Fwd)
ProcessWhOpen 处理武汉国标协议
func (*DataProcessor) ProcessYfDry ¶
func (dp *DataProcessor) ProcessYfDry(d []byte) (r *Rtb)
ProcessYfDry 处理基于ip的设备数据
type Fwd ¶
type Fwd struct { DataUDPAddr *net.UDPAddr // for udp only DataMsg []byte // 发送数据 DataSrc *[]byte // 传递数据 DataCmd string // 指令命令 DataDst string // for tml, something like "wlst-rtu-1" DstIP string // 目标ip Area string // 设备区域码 Ex string // 错误信息 Src string // 原始数据 Remark string // 备注信息,或其他想要传出的数据 DstSIM string // 目标模块地址 DstIMEI string // 目标imei DevID string // 设备devid Addr int64 // 设备地址 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 Tra byte // 1-socket, 2-485 Job byte // 0-just send,1-need do something else }
Fwd 数据解析结果需发送内容结构体
Click to show internal directories.
Click to hide internal directories.