心跳检测

This commit is contained in:
suyl
2021-06-28 17:36:40 +08:00
parent 2857b4fc22
commit 116e440e8f
3 changed files with 52 additions and 30 deletions

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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)