aa
This commit is contained in:
@@ -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 {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user