a
This commit is contained in:
@@ -28,6 +28,7 @@ const (
|
||||
printMsgFail = -1 //打印失败(打印机报出)
|
||||
printMsgErr = -2 //京西报出
|
||||
|
||||
heartErrNormal = "00" //正常
|
||||
heartErrWithoutPaper = "04" //心跳错,缺纸
|
||||
heartErrHot = "08" //过热
|
||||
|
||||
@@ -96,14 +97,24 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
type PrintInfo struct {
|
||||
C net.Conn
|
||||
Status int // 2 //在线缺纸 1 //在线 -1 //离线
|
||||
}
|
||||
|
||||
//连接的客户端,吧每个客户端都放进来
|
||||
type TcpClient struct {
|
||||
Clients map[string]net.Conn
|
||||
Clients map[string]*PrintInfo
|
||||
s *sync.RWMutex
|
||||
}
|
||||
|
||||
type GetPrintStatus struct {
|
||||
PrintNo string //打印机编号
|
||||
|
||||
}
|
||||
|
||||
func ListenTcp() {
|
||||
tcpClient.Clients = make(map[string]net.Conn)
|
||||
tcpClient.Clients = make(map[string]*PrintInfo)
|
||||
l, err := net.Listen("tcp", ":8000")
|
||||
if err != nil {
|
||||
fmt.Println("listen error:", err)
|
||||
@@ -141,6 +152,8 @@ func handleConn(c net.Conn) {
|
||||
}
|
||||
return
|
||||
}
|
||||
//也可能是查状态的
|
||||
|
||||
//看是心跳还是打印返回
|
||||
data := hex.EncodeToString(buffer[:n])
|
||||
//证明是心跳
|
||||
@@ -150,10 +163,20 @@ func handleConn(c net.Conn) {
|
||||
printNo = string(printNoData)
|
||||
globals.SugarLogger.Debugf("handleConn printno :[%v]", printNo)
|
||||
if tcpClient.Clients[printNo] == nil {
|
||||
tcpClient.Clients[printNo] = c
|
||||
printInfo := &PrintInfo{
|
||||
C: c,
|
||||
Status: printStatus2JxStatus(data[len(data)-8 : len(data)-6]),
|
||||
}
|
||||
tcpClient.Clients[printNo] = printInfo
|
||||
} else {
|
||||
//改变打印机状态
|
||||
changePrinterStatus(printNo, printerStatusOnline)
|
||||
//changePrinterStatus(printNo, printerStatusOnline)
|
||||
if tcpClient.Clients[printNo] != nil {
|
||||
status := printStatus2JxStatus(data[len(data)-8 : len(data)-6])
|
||||
if tcpClient.Clients[printNo].Status != status {
|
||||
tcpClient.Clients[printNo].Status = status
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if strings.Contains(data, printText) {
|
||||
globals.SugarLogger.Debugf("handleConn print: %v", data)
|
||||
@@ -162,6 +185,15 @@ func handleConn(c net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func printStatus2JxStatus(printStatus string) (status int) {
|
||||
if printStatus == heartErrWithoutPaper {
|
||||
return printerStatusOnlineWithoutPaper
|
||||
} else if printStatus == heartErrNormal {
|
||||
return printerStatusOnline
|
||||
}
|
||||
return status
|
||||
}
|
||||
|
||||
func changePrintMsg(data string) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
@@ -217,11 +249,14 @@ func HandleTcpMessages() {
|
||||
if printMsg != nil {
|
||||
if err = checkPrintMsg(printMsg); err == nil {
|
||||
if tcpClient.Clients[printMsg.PrintNo] != nil {
|
||||
c = tcpClient.Clients[printMsg.PrintNo]
|
||||
data, err = buildMsg(printMsg)
|
||||
} else {
|
||||
changePrinterStatus(printMsg.PrintNo, printerStatusOffline)
|
||||
if tcpClient.Clients[printMsg.PrintNo].C != nil {
|
||||
c = tcpClient.Clients[printMsg.PrintNo].C
|
||||
data, err = buildMsg(printMsg)
|
||||
}
|
||||
}
|
||||
//else {
|
||||
// changePrinterStatus(printMsg.PrintNo, printerStatusOffline)
|
||||
//}
|
||||
}
|
||||
} else {
|
||||
err = fmt.Errorf("未查询到此printMsg")
|
||||
|
||||
Reference in New Issue
Block a user