From 30f92b5384eb496771d4ee88397941284870617c Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Mon, 28 Jun 2021 14:28:04 +0800 Subject: [PATCH] aa --- business/jxstore/event/event_tcp.go | 44 ++++++++++++++++++----------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index 67227d460..0e902dfd1 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -1,29 +1,31 @@ package event import ( - "encoding/json" + "encoding/hex" "fmt" "git.rosy.net.cn/jx-callback/globals" "io" "net" "strconv" + "strings" "sync" ) +const ( + heartText = "1e000f02000151" + printText = "1e00180200" + printSuccessText = "1e001802000150" +) + var ( //广播频道(通道) msgChan = make(chan string) tcpClient = &TcpClient{} ) -type PrintMsg struct { - PrintNo string `json:"print_no"` - Data string `json:"data"` -} - //连接的客户端,吧每个客户端都放进来 type TcpClient struct { - Clients map[string][]interface{} + Clients map[string]net.Conn s *sync.RWMutex } @@ -33,7 +35,7 @@ func Init() { } func listenTcp() { - tcpClient.Clients = make(map[string][]interface{}) + tcpClient.Clients = make(map[string]net.Conn) l, err := net.Listen("tcp", ":8000") if err != nil { fmt.Println("listen error:", err) @@ -51,7 +53,7 @@ func listenTcp() { func handleConn(c net.Conn) { var ( - printMsg = &PrintMsg{} + printNo string //打印机编号 ) if c == nil { globals.SugarLogger.Debugf("conn is nil") @@ -69,13 +71,23 @@ func handleConn(c net.Conn) { } return } - //能转说明是打印信息,不能转说明是打印机的心跳或者连接 - if err = json.Unmarshal(buffer[:n], &printMsg); err == nil { - //是打印信息就把信息放进chan里,后续根据信息里的printno寻找客户端连接并打印 - msgChan <- string(buffer[:n]) - } else { - //如果是打印机的心跳或者打印信息返回 - //tcpClient.Clients[] + //看是心跳还是打印返回 + data := hex.EncodeToString(buffer[:n]) + //证明是心跳 + if strings.Contains(data, heartText) { + printNo = data[len(heartText) : len(data)-8] + if tcpClient.Clients[printNo] == nil { + tcpClient.Clients[printNo] = c + } else { + //改变打印机状态 + } + } else if strings.Contains(data, printText) { + //证明是打印成功 + if strings.Contains(data, printSuccessText) { + + } else { + + } } } }