尝试打印

This commit is contained in:
suyl
2021-06-28 18:14:46 +08:00
parent 20fbd266f4
commit 5a54d537b5
2 changed files with 16 additions and 60 deletions

View File

@@ -0,0 +1 @@
package dao

View File

@@ -1,18 +1,15 @@
package controllers package controllers
import ( import (
"encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/server/web" "github.com/astaxie/beego/server/web"
"net"
"net/url" "net/url"
"os"
"reflect" "reflect"
"strconv"
) )
type ApiController struct { type ApiController struct {
@@ -110,7 +107,6 @@ func (c *ApiController) CallOpenAPI() {
//call //call
urls, _ = c.Input() urls, _ = c.Input()
dataMap = utils.URLValues2Map(urls) dataMap = utils.URLValues2Map(urls)
delete(dataMap, keyAppID)
delete(dataMap, keyMethod) delete(dataMap, keyMethod)
delete(dataMap, keyTimestamp) delete(dataMap, keyTimestamp)
parms = []reflect.Value{reflect.ValueOf(dataMap)} parms = []reflect.Value{reflect.ValueOf(dataMap)}
@@ -155,62 +151,21 @@ func (c *ApiController) AddPrint(dataMap map[string]interface{}) (data string, e
} }
func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data string, err error) { func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data string, err error) {
data = dataMap["data"].(string) var (
server := "print.jxcs.net:8000" content = dataMap["data"].(string)
tcpAddr, err := net.ResolveTCPAddr("tcp4", server) printNo = dataMap["print_no"].(string)
if err != nil { orderNo = utils.Interface2Int64WithDefault(dataMap["order_no"], 0)
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) db = dao.GetDB()
os.Exit(1) )
if orderNo == 0 {
return data, fmt.Errorf("订单序号不能为0")
} }
conn, err := net.DialTCP("tcp", nil, tcpAddr) printMsg := &model.PrintMsg{
if err != nil { PrintNo: printNo,
return Content: content,
OrderNo: int(orderNo),
} }
textChan = make(chan string, 10) dao.WrapAddIDCULDEntity(printMsg, "")
textChan <- data dao.CreateEntity(db, printMsg)
go connHandler(conn)
return data, err return data, err
} }
func connHandler(c net.Conn) {
str := "1e"
const1 := "0200ff50"
orderNo := "0001" //订单序列号
printInit := "1b40" //打印机初始化
voice := "1b59415501" //语音响一次
check := "ff"
select {
case s := <-textChan:
//写入数据
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
n, err := c.Write([]byte(data))
if err != nil {
fmt.Println("Write err:", err, n)
return
}
}
}
func int2h8l8(i int64) (h, l string) {
origin2 := fmt.Sprintf("%b", i)
flag := 16 - len(origin2)
for i := 0; i < flag; i++ {
origin2 = "0" + origin2
}
begin8 := origin2[:8]
end8 := origin2[8:]
r1, _ := strconv.ParseInt(begin8, 2, 32)
r2, _ := strconv.ParseInt(end8, 2, 32)
h = fmt.Sprintf("%x", r1)
l = fmt.Sprintf("%x", r2)
if len(h) < 2 {
h = "0" + h
}
if len(l) < 2 {
l = "0" + l
}
return h, l
}