From 116e440e8f17e94f0dc67e8821820f8c28297438 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Mon, 28 Jun 2021 17:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=83=E8=B7=B3=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/event/event_tcp.go | 53 +++++++++++++---------------- business/jxutils/jxutils.go | 27 +++++++++++++++ business/model/dao/dao_print.go | 2 ++ 3 files changed, 52 insertions(+), 30 deletions(-) diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index 298aacf72..fbe3fa81c 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -3,6 +3,7 @@ package event import ( "encoding/hex" "fmt" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" @@ -25,6 +26,9 @@ const ( printMsgWait = 0 //待打印 printMsgFail = -1 //打印失败(打印机报出) printMsgErr = -2 //京西报出 + + heartErrWithoutPaper = "04" //心跳错,缺纸 + heartErrHot = "08" //过热 ) var ( @@ -95,6 +99,7 @@ func handleConn(c net.Conn) { tcpClient.Clients[printNo] = c } else { //改变打印机状态 + } } else if strings.Contains(data, printText) { changePrintMsg(db, data) @@ -165,7 +170,10 @@ func handleTcpMessages() { printMsg.Comment = err.Error() dao.UpdateEntity(db, printMsg, "Status", "Comment") } else { - c.Write(data) + if _, err = c.Write(data); err != nil { + globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err) + c.Close() + } } } } @@ -173,21 +181,22 @@ func handleTcpMessages() { func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) { var ( - //content = printMsg.Content - //orderNo = printMsg.OrderNo - //str = "1e" - //const1 = "0200ff50" - //printInit = "1b40" //打印机初始化 - //voice = "1b59415501" //语音响一次 - //check = "ff" + content = printMsg.Content + orderNo = printMsg.OrderNo + str = "1e" + const1 = "0200ff50" + printInit = "1b40" //打印机初始化 + voice = "1b59415501" //语音响一次 + check = "ff" + orderNoHexH, orderNoHexL string ) //写入数据 - //printData := hex.EncodeToString([]byte(s)) - //lenData := int64(len(str) + len(const1) + len(orderNo) + len(printInit) + len(voice) + 1 + 2 + len(printData)) - //x1, x2 := int2h8l8(lenData / 2) - //data = str + x1 + x2 + const1 + orderNo + printInit + voice + printData + check - - return data, err + orderNoHexH, orderNoHexL = int2h8l8(int64(orderNo)) + printData := hex.EncodeToString([]byte(content)) + lenData := int64(len(str) + len(const1) + len(orderNoHexH) + len(orderNoHexL) + len(printInit) + len(voice) + 1 + 2 + len(printData)) + x1, x2 := int2h8l8(lenData / 2) + dataStr := str + x1 + x2 + const1 + orderNoHexH + orderNoHexL + printInit + voice + printData + check + return jxutils.Hextob(dataStr), err } func checkPrintMsg(printMsg *model.PrintMsg) (err error) { @@ -203,22 +212,6 @@ func checkPrintMsg(printMsg *model.PrintMsg) (err error) { return err } -func Hextob(str string) []byte { - slen := len(str) - bHex := make([]byte, len(str)/2) - ii := 0 - for i := 0; i < len(str); i = i + 2 { - if slen != 1 { - ss := string(str[i]) + string(str[i+1]) - bt, _ := strconv.ParseInt(ss, 16, 32) - bHex[ii] = byte(bt) - ii = ii + 1 - slen = slen - 2 - } - } - return bHex -} - func int2h8l8(i int64) (h, l string) { origin2 := fmt.Sprintf("%b", i) flag := 16 - len(origin2) diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 387d0c5e4..60da45c70 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -7,10 +7,13 @@ import ( "crypto/md5" "encoding/base64" "fmt" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/transform" "io/ioutil" "math" "math/rand" "regexp" + "strconv" "strings" "time" @@ -900,3 +903,27 @@ func GetWeekTime() (weekTimeBegin, weekTimeEnd time.Time) { weekTimeEnd = weekTimeBegin.AddDate(0, 0, 7) return weekTimeBegin, weekTimeEnd } + +func Utf8ToGbk(str []byte) (b []byte, err error) { + r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewEncoder()) + b, err = ioutil.ReadAll(r) + if err != nil { + return + } + return +} +func Hextob(str string) []byte { + slen := len(str) + bHex := make([]byte, len(str)/2) + ii := 0 + for i := 0; i < len(str); i = i + 2 { + if slen != 1 { + ss := string(str[i]) + string(str[i+1]) + bt, _ := strconv.ParseInt(ss, 16, 32) + bHex[ii] = byte(bt) + ii = ii + 1 + slen = slen - 2 + } + } + return bHex +} diff --git a/business/model/dao/dao_print.go b/business/model/dao/dao_print.go index 2a7983983..992684995 100644 --- a/business/model/dao/dao_print.go +++ b/business/model/dao/dao_print.go @@ -35,3 +35,5 @@ func GetPrintMsgs(db *DaoDB, status, offset, pageSize int) (prints []*model.Prin err = GetRows(db, &prints, sql, sqlParams) return prints, err } + +//func GetPrinter(db *DaoDB,printNo string)(print []*model)