package main
import (
"fmt"
"net"
"strings"
)
const (
BitNotConsidered ="不考虑的比特位"
bit01 = "断纤告警"
bit02 = "高温告警"
bit03 = "温升告警"
)
type TotalStat struct {
GlobalAlarm string
//第一个寄存器bit0~bit3的状态
FirstBitGlobalAlarmStatus string
SecondBitGlobalAlarmStatus string
ThirdBitGlobalAlarmStatus string
ForthBitGlobalAlarmStatus string
//第二个寄存器每个比特采集状态
FirstBitCollectStatus string
SecondBitCollectStatus string
ThirdBitCollectStatus string
ForthBitCollectStatus string
FifthBitCollectStatus string
SixthBitCollectStatus string
SeventhBitCollectStatus string
EighthBitCollectStatus string
NinthBitCollectStatus string
TenthBitCollectStatus string
EleventhBitCollectStatus string
TwelfthBitCollectStatus string
ThirteenthBitCollectStatus string
FourteenthBitCollectStatus string
FifteenthBitCollectStatus string
SixteenthBitCollectStatus string
//第五个寄存器每个比特断纤状态
FirstBitBrokenFiberStatus string
SecondBitBrokenFiberStatus string
ThirdBitBrokenFiberStatus string
ForthBitBrokenFiberStatus string
FifthBitBrokenFiberStatus string
SixthBitBrokenFiberStatus string
SeventhBitBrokenFiberStatus string
EighthBitBrokenFiberStatus string
NinthBitBrokenFiberStatus string
TenthBitBrokenFiberStatus string
EleventhBitBrokenFiberStatus string
TwelfthBitBrokenFiberStatus string
ThirteenthBitBrokenFiberStatus string
FourteenthBitBrokenFiberStatus string
FifteenthBitBrokenFiberStatus string
SixteenthBitBrokenFiberStatus string
//第六个寄存器断纤告警状态
FirstBitFiberCutStatus string
SecondBitFiberCutStatus string
ThirdBitFiberCutStatus string
ForthBitFiberCutStatus string
FifthBitFiberCutStatus string
SixthBitFiberCutStatus string
SeventhBitFiberCutStatus string
EighthBitFiberCutStatus string
NinthBitFiberCutStatus string
TenthBitFiberCutStatus string
EleventhBitFiberCutStatus string
TwelfthBitFiberCutStatus string
ThirteenthBitFiberCutStatus string
FourteenthBitFiberCutStatus string
FifteenthBitFiberCutStatus string
SixteenthBitFiberCutStatus string
//第八个寄存器断纤告警状态
FirstBitFiberCutAlarmStatus string
SecondBitFiberCutAlarmStatus string
ThirdBitFiberCutAlarmStatus string
ForthBitFiberCutAlarmStatus string
FifthBitFiberCutAlarmStatus string
SixthBitFiberCutAlarmStatus string
SeventhBitFiberCutAlarmStatus string
EighthBitFiberCutAlarmStatus string
CH16 string
CH1732 string
}
func Str2DEC(s string) (num int) {
l := len(s)
for i := l - 1; i >= 0; i-- {
num += (int(s[l-i-1]) & 0xf) << uint8(i)
}
return
}
type DeviceStatus struct{
RegisterID int
RegisterName string
FirstBitStatus string
SecondBitStatus string
ThirdBitStatus string
ForthBitStatus string
FifthBitStatus string
SixthBitStatus string
SeventhBitStatus string
EighthBitStatus string
NinthBitStatus string
TenthBitStatus string
EleventhBitStatus string
TwelfthBitStatus string
ThirteenthBitStatus string
FourteenthBitStatus string
FifteenthBitStatus string
SixteenthBitStatus string
}
type DeviceStatusNumber struct{
RegisterId int
RegisterName string
Number int
}
var TS TotalStat
func main() {
//主动连接服务器
conn, err := net.Dial("tcp", "192.168.1.154:502")
if err != nil {
fmt.Println("client dial err=", err)
return
}
//defer conn.Close()
_, err = conn.Write([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x01, 0x00, 0x09}) // + "\n"
if err != nil {
fmt.Println("conn.Write err=", err)
}
//接收服务器回复的数据
buf := make([]byte, 2048)
for {
//n,err2:= conn.Read(buf)
n, err2 := conn.Read(buf)
if err2 != nil {
fmt.Println("服务器read err=", err2)
return
}
st
GOlang语言实现TCP调试助手客户端功能并把返回的数据结果保存到结构体数组里面(解析Modbus TCP协议为案例)
最新推荐文章于 2023-03-31 14:24:42 发布

使用Go语言编写TCP客户端,连接到指定服务器,读取Modbus TCP协议数据,将返回的设备状态信息解析并存储到结构体中,包括断纤、告警等状态,并进行详细的状态分析和展示。
最低0.47元/天 解锁文章
99

被折叠的 条评论
为什么被折叠?



