From 2ac8dcbddafd00201b9adbcf225d16bd42693507 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Fri, 9 Jul 2021 11:40:54 +0800 Subject: [PATCH] aa --- business/jxstore/event/event_tcp.go | 42 ++++++++++++++++++++++------- business/model/dao/dao_print.go | 9 ++++++- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index 528651e97..bed7b5bf7 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -52,6 +52,7 @@ const ( signQrCenter = "" //二维码居中 signQrLeft = "" //二维码居左 signQrRight = "" //二维码居右 + signSound = "" //声音 hexSignBROrEXE = "0a" hexSignCenter = "1b6101" @@ -66,6 +67,7 @@ const ( hexSignQrRight = "1d5804" hexSignQr = "1b5a000106" //"1b5a000106" 0600 : 后面二维码的字节数 hexSignQrEnd = "000a1b40" //000a0a0a1b40 + hexSignSound = "1d6b40" byteSignBR = "3c62723e" //换行 byteSignCenter = "3c63656e7465723e" //居中 @@ -77,6 +79,7 @@ const ( byteSignQrCenter = "3c7172633e" byteSignQrLeft = "3c71726c3e" byteSignQrRight = "3c7172723e" + byteSignSound = "3c736f756e643e" byteSignCenterE = "3c2f63656e7465723e" //居中 byteSignLeftE = "3c2f6c6566743e" //居左 @@ -87,6 +90,7 @@ const ( byteSignQrCenterE = "3c2f7172633e" byteSignQrLeftE = "3c2f71726c3e" byteSignQrRightE = "3c2f7172723e" + byteSignSoundE = "3c2f736f756e643e" ) var ( @@ -100,9 +104,10 @@ var ( byteSignBR: hexSignBROrEXE, } - regexpQrc = regexp.MustCompile(byteSignQrCenter + "(.*?)" + byteSignQrCenterE) - regexpQrl = regexp.MustCompile(byteSignQrLeft + "(.*?)" + byteSignQrLeftE) - regexpQrr = regexp.MustCompile(byteSignQrRight + "(.*?)" + byteSignQrRightE) + regexpQrc = regexp.MustCompile(byteSignQrCenter + "(.*?)" + byteSignQrCenterE) + regexpQrl = regexp.MustCompile(byteSignQrLeft + "(.*?)" + byteSignQrLeftE) + regexpQrr = regexp.MustCompile(byteSignQrRight + "(.*?)" + byteSignQrRightE) + regexpSound = regexp.MustCompile(byteSignSound + "(.*?)" + byteSignSoundE) ) type PrintInfo struct { @@ -374,9 +379,9 @@ func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) { orderNo = printMsg.OrderNo str = "1e" const1 = "0200ff50" - printInit = "1b40" //打印机初始化 - voice = "1d6b401dfd001a01015b7631365d736f756e64622cc4fad3d0d0c2b6a9b5a5c0b1" //语音,中国 - check = "ff" + printInit = "1b40" //打印机初始化 + //voice = "1d6b401dfd001a01015b7631365d736f756e64622cc4fad3d0d0c2b6a9b5a5c0b1" //语音,中国 + check = "ff" //qr = "1d58021b5a0001061600747470733a2f2f7777772e62616964752e636f6d2f1b000A0A0A1B40" orderNoHexH, orderNoHexL, printData string ) @@ -384,15 +389,15 @@ func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) { orderNoHexH, orderNoHexL = int2h8l8(int64(orderNo)) printDataGBK, _ := jxutils.Utf8ToGbk([]byte(content)) printData = hex.EncodeToString(printDataGBK) - printData = replaceContent(printData) - lenData := int64(len(str) + len(const1) + len(orderNoHexH) + len(orderNoHexL) + len(printInit) + len(check) + len(voice) + len(hexSignBROrEXE) + 4 + len(printData)) + printData = replaceContent(printData, printMsg) + lenData := int64(len(str) + len(const1) + len(orderNoHexH) + len(orderNoHexL) + len(printInit) + len(check) + len(hexSignBROrEXE) + 4 + len(printData)) x1, x2 := int2h8l8(lenData / 2) - dataStr := str + x1 + x2 + const1 + orderNoHexH + orderNoHexL + printInit + voice + printData + hexSignBROrEXE + check + dataStr := str + x1 + x2 + const1 + orderNoHexH + orderNoHexL + printInit + printData + hexSignBROrEXE + check return jxutils.Hextob(dataStr), err } //内容中的标签替换成指令 -func replaceContent(content string) (result string) { +func replaceContent(content string, printMsg *model.PrintMsg) (result string) { var ( lenqr int hexLenqr string @@ -460,6 +465,23 @@ func replaceContent(content string) (result string) { result = strings.ReplaceAll(result, byteSignQrRight, hexSignQrRight+hexSignQr+hexLenqr+"00") result = strings.ReplaceAll(result, byteSignQrRightE, hexSignQrEnd) } + if strings.Contains(result, byteSignSound) && strings.Contains(result, byteSignSoundE) { + if sounds := regexpSound.FindStringSubmatch(result); len(sounds) > 0 { + sound := sounds[1] + if printer, _ := dao.GetPrinter(dao.GetDB(), printMsg.PrintNo); printer != nil { + //先把结束标签消了 + result = strings.ReplaceAll(result, byteSignSoundE, "") + //fd 固定 + //001a (声音数据长度高八位低八位) + //0101 固定 + soundPerfix := "[" + utils.Int2Str(printer.Volume*2) + "]" + printer.Sound + "," + realSound := soundPerfix + sound + allLen := fmt.Sprintf("%x", (len("fd001a0101")+len(realSound))/2) + soundLenH, soundLenX := int2h8l8(int64(len(realSound) / 2)) + result = strings.ReplaceAll(result, byteSignSound, hexSignSound+allLen+"fd"+soundLenH+soundLenX+"0101"+soundPerfix) + } + } + } return result } diff --git a/business/model/dao/dao_print.go b/business/model/dao/dao_print.go index f614b8ac3..c784ced2e 100644 --- a/business/model/dao/dao_print.go +++ b/business/model/dao/dao_print.go @@ -67,4 +67,11 @@ func GetPrintMsgsFail(db *DaoDB, beginAt, endAt time.Time) (prints []*model.Prin return prints, err } -//func GetPrinter(db *DaoDB,printNo string)(print []*model) +func GetPrinter(db *DaoDB, printNo string) (print *model.Printer, err error) { + sql := ` + SELECT * FROM printer WHERE print_no = ? + ` + sqlParams := []interface{}{printNo} + err = GetRow(db, &print, sql, sqlParams) + return print, err +}