diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index 6a5c4d3a4..b3c41a63f 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -219,7 +219,7 @@ func handleConn(c net.Conn) { tcpClient.s.Unlock() } } else if strings.Contains(data, printText) { - globals.SugarLogger.Debugf("handleConn print: %v", data) + globals.SugarLogger.Debugf("handleConn print callback: %v", data) changePrintMsg(data) } } @@ -272,7 +272,7 @@ func printFail() (err error) { } } tcpClient.s.RUnlock() - if c != nil && tcpClient.Clients[printMsg.PrintNo].Status == printerStatusOnline { + if c != nil { if _, err = c.Write(data); err != nil { globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err) delete(tcpClient.Clients, printMsg.PrintNo) @@ -424,7 +424,6 @@ func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) { const1 = "0200ff50" printInit = "1b40" //打印机初始化 //voice = "1d6b401dfd001a01015b7631365d736f756e64622cc4fad3d0d0c2b6a9b5a5c0b1" //语音,中国 - check = "aa" //qr = "1d58021b5a0001061600747470733a2f2f7777772e62616964752e636f6d2f1b000A0A0A1B40" orderNoHexH, orderNoHexL, printData string ) @@ -433,10 +432,22 @@ func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) { printDataGBK, _ := jxutils.Utf8ToGbk([]byte(content)) printData = hex.EncodeToString(printDataGBK) printData = replaceContent(printData, printMsg) - lenData := int64(len(str) + len(const1) + len(orderNoHexH) + len(orderNoHexL) + len(printInit) + len(check) + len(hexSignBROrEXE) + 4 + len(printData)) + lenData := int64(len(str) + len(const1) + len(orderNoHexH) + len(orderNoHexL) + len(printInit) + 2 + len(hexSignBROrEXE) + 4 + len(printData)) x1, x2 := int2h8l8(lenData / 2) - dataStr := str + x1 + x2 + const1 + orderNoHexH + orderNoHexL + printInit + printData + hexSignBROrEXE + check - return jxutils.Hextob(dataStr), err + dataStr := str + x1 + x2 + const1 + orderNoHexH + orderNoHexL + printInit + printData + hexSignBROrEXE + check := getCheckSum(dataStr) + return jxutils.Hextob(dataStr + check), err +} + +func getCheckSum(str string) (check string) { + var sum int64 + for i := 0; i < len(str); i = i + 2 { + b := string(str[i]) + string(str[i+1]) + bt, _ := strconv.ParseInt(b, 16, 32) + sum += bt + } + _, check = int2h8l8(sum) + return check } //内容中的标签替换成指令