Forráskód Böngészése

fix: 清理PrintTicket——移除32位辅助回退,保留CSN WriteData的ESC/POS直发管道

lq 1 hónapja
szülő
commit
24efc00556
1 módosított fájl, 15 hozzáadás és 30 törlés
  1. 15 30
      internal/modules/printer/service/service.go

+ 15 - 30
internal/modules/printer/service/service.go

@@ -2,8 +2,6 @@ package service
 
 import (
 	"fmt"
-	"os"
-	"os/exec"
 	"time"
 	"wails-app/internal/dao"
 	"wails-app/internal/global"
@@ -32,18 +30,14 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 			defer srl.Close()
 		}
 	} else {
+		// USB → CSN SDK 直连
 		err = InitCSN(sdkDllPath)
 		if err != nil {
-			return fmt.Errorf("加载 CSN DLL 失败: %w (path=%s)", err, sdkDllPath)
+			return fmt.Errorf("加载 CSN DLL 失败: %w", err)
 		}
-		// 枚举初始化(C# Demo 在 initForm() 中调用,可能是必要的初始化步骤)
-		Csn_EnumUSB()
+		Csn_EnumUSB() // USB 子系统初始化
 		Csn_EnumPRN()
-		// 尝试 OpenUSB → OpenPRN
 		name := printer.PortName
-		if name == "USB" || name == "auto" || name == "" {
-			name = Csn_EnumUSB()
-		}
 		usbHandle, err = csn_OpenUSB(name)
 		if err != nil {
 			usbHandle, err = csn_OpenPRN(name)
@@ -52,7 +46,7 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 			return fmt.Errorf("打开打印机失败: %w (name=%s)", err, name)
 		}
 		useCSN = true
-		csn_SetPort(usbHandle) // 激活端口!
+		csn_SetPort(usbHandle)
 		defer csn_Close(usbHandle)
 	}
 
@@ -60,7 +54,7 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 	slipNo := fmt.Sprintf("%d", ticketID)
 
 	if useCSN {
-		// 构造 ESC/POS 数据 → 写成临时文件 → 调 32 位辅助工具打印
+		// ESC/POS → WriteData 直发
 		var buf []byte
 		add := func(b []byte) { buf = append(buf, b...) }
 		add(InitCmd); add(AlignCenterCmd); add(DoubleHeightCmd); add(BoldOnCmd)
@@ -71,11 +65,11 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 		add(ESCPOS_Text("PARK AT YOUR OWN RISK"))
 		add(ESCPOS_Text("================================"))
 		add(AlignLeftCmd)
-		add(ESCPOS_Text("In-Time::"+now))
-		if channelCode != "" { add(ESCPOS_Text("InGate::"+channelCode)) }
-		if plateNo != "" { add(ESCPOS_Text("Veh No::"+plateNo)) }
+		add(ESCPOS_Text("In-Time::" + now))
+		if channelCode != "" { add(ESCPOS_Text("InGate::" + channelCode)) }
+		if plateNo != "" { add(ESCPOS_Text("Veh No::" + plateNo)) }
 		add(ESCPOS_Text("================================"))
-		add(ESCPOS_Text("Slip No::"+slipNo))
+		add(ESCPOS_Text("Slip No::" + slipNo))
 		add(ESCPOS_Text("================================"))
 		add(AlignCenterCmd); add(ESCPOS_Text(""))
 		add(ESCPOS_QRCode(ticketNo))
@@ -84,21 +78,12 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 		add(ESCPOS_Text("NEW THE CANADIA BANK APP"))
 		add(InitCmd); add(ESCPOS_Text("")); add(ESCPOS_Text("")); add(ESCPOS_Text(""))
 		add(CutPaperCmd)
-		// 先尝试 CSN DLL WriteData,失败则用 32 位辅助工具
-		n := Csn_WriteData(buf)
-		if n == 0 {
-			tmp, _ := os.CreateTemp("", "ticket_*.bin")
-			if tmp != nil {
-				tmp.Write(buf); tmp.Close()
-				exec.Command("build/bin/ticket-print.exe", printer.PortName, tmp.Name()).Run()
-				os.Remove(tmp.Name())
-			}
-		}
+		Csn_WriteData(buf)
 		global.GVA_DB.Model(&printer).Update("status", "online")
 		return nil
 	}
 
-	// Serial ESC/POS fallback
+	// 串口模式
 	write := func(data []byte) { srl.Write(data) }
 	line32 := "================================"
 	write(InitCmd); write(AlignCenterCmd); write(DoubleHeightCmd); write(BoldOnCmd)
@@ -108,10 +93,10 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 	write(ESCPOS_Text("A-General Car")); write(ESCPOS_Text(""))
 	write(ESCPOS_Text("PARK AT YOUR OWN RISK")); write(ESCPOS_Text(line32))
 	write(AlignLeftCmd)
-	write(ESCPOS_Text("In-Time::"+now))
-	if channelCode != "" { write(ESCPOS_Text("InGate::"+channelCode)) }
-	if plateNo != "" { write(ESCPOS_Text("Veh No::"+plateNo)) }
-	write(ESCPOS_Text(line32)); write(ESCPOS_Text("Slip No::"+slipNo)); write(ESCPOS_Text(line32))
+	write(ESCPOS_Text("In-Time::" + now))
+	if channelCode != "" { write(ESCPOS_Text("InGate::" + channelCode)) }
+	if plateNo != "" { write(ESCPOS_Text("Veh No::" + plateNo)) }
+	write(ESCPOS_Text(line32)); write(ESCPOS_Text("Slip No::" + slipNo)); write(ESCPOS_Text(line32))
 	write(AlignCenterCmd); write(ESCPOS_Text(""))
 	write(ESCPOS_QRCode(ticketNo)); write(ESCPOS_Text(""))
 	write(AlignCenterCmd)