This commit is contained in:
suyl
2021-06-28 14:28:04 +08:00
parent 339829d73f
commit 30f92b5384

View File

@@ -1,29 +1,31 @@
package event package event
import ( import (
"encoding/json" "encoding/hex"
"fmt" "fmt"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"io" "io"
"net" "net"
"strconv" "strconv"
"strings"
"sync" "sync"
) )
const (
heartText = "1e000f02000151"
printText = "1e00180200"
printSuccessText = "1e001802000150"
)
var ( var (
//广播频道(通道) //广播频道(通道)
msgChan = make(chan string) msgChan = make(chan string)
tcpClient = &TcpClient{} tcpClient = &TcpClient{}
) )
type PrintMsg struct {
PrintNo string `json:"print_no"`
Data string `json:"data"`
}
//连接的客户端,吧每个客户端都放进来 //连接的客户端,吧每个客户端都放进来
type TcpClient struct { type TcpClient struct {
Clients map[string][]interface{} Clients map[string]net.Conn
s *sync.RWMutex s *sync.RWMutex
} }
@@ -33,7 +35,7 @@ func Init() {
} }
func listenTcp() { func listenTcp() {
tcpClient.Clients = make(map[string][]interface{}) tcpClient.Clients = make(map[string]net.Conn)
l, err := net.Listen("tcp", ":8000") l, err := net.Listen("tcp", ":8000")
if err != nil { if err != nil {
fmt.Println("listen error:", err) fmt.Println("listen error:", err)
@@ -51,7 +53,7 @@ func listenTcp() {
func handleConn(c net.Conn) { func handleConn(c net.Conn) {
var ( var (
printMsg = &PrintMsg{} printNo string //打印机编号
) )
if c == nil { if c == nil {
globals.SugarLogger.Debugf("conn is nil") globals.SugarLogger.Debugf("conn is nil")
@@ -69,13 +71,23 @@ func handleConn(c net.Conn) {
} }
return return
} }
//能转说明是打印信息,不能转说明是打印机的心跳或者连接 //看是心跳还是打印返回
if err = json.Unmarshal(buffer[:n], &printMsg); err == nil { data := hex.EncodeToString(buffer[:n])
//是打印信息就把信息放进chan里后续根据信息里的printno寻找客户端连接并打印 //证明是心跳
msgChan <- string(buffer[:n]) if strings.Contains(data, heartText) {
} else { printNo = data[len(heartText) : len(data)-8]
//如果是打印机的心跳或者打印信息返回 if tcpClient.Clients[printNo] == nil {
//tcpClient.Clients[] tcpClient.Clients[printNo] = c
} else {
//改变打印机状态
}
} else if strings.Contains(data, printText) {
//证明是打印成功
if strings.Contains(data, printSuccessText) {
} else {
}
} }
} }
} }