Ver Fonte

feat: USB枚举调试端点 /ticket-machine/usb-list+导出CSN函数

lq há 1 mês atrás
pai
commit
95623cee70

+ 9 - 0
internal/modules/printer/api.go

@@ -73,6 +73,15 @@ func SetupPrinterRouter(router *gin.RouterGroup) {
 // SetupPrinterPublic 公开测试路由(无需JWT)
 func SetupPrinterPublic(router *gin.RouterGroup) {
 	router.GET("/ticket-machine/test", TicketMachineButtonTest)
+	router.GET("/ticket-machine/usb-list", func(c *gin.Context) {
+		printService.InitCSN(`D:\lq\资料\停车场 道闸 车牌识别 收费机\票机自制\打印机\EMD807嵌入式热敏票据打印模组\5、SDK指令集\Win_SDK_Demo_2023_08_14\Win_SDK_Demo_2023_08_14\lib\x64\CsnPrinterLibs.dll`)
+		name := printService.Csn_EnumUSB()
+		if name == "" {
+			response.FailWithMessage("未发现 USB 打印机", c)
+		} else {
+			response.OkWithData(gin.H{"usb_printer": name}, c)
+		}
+	})
 }
 
 func TicketMachineButtonTest(c *gin.Context) {

+ 2 - 2
internal/modules/printer/service/csn_dll.go

@@ -10,7 +10,7 @@ import (
 
 var csnDll *syscall.LazyDLL
 
-func initCSN(dllPath string) error {
+func InitCSN(dllPath string) error {
 	csnDll = syscall.NewLazyDLL(dllPath)
 	// Test load
 	if err := csnDll.Load(); err != nil {
@@ -21,7 +21,7 @@ func initCSN(dllPath string) error {
 
 // === Port functions ===
 
-func csn_EnumUSB() string {
+func Csn_EnumUSB() string {
 	if csnDll == nil {
 		return ""
 	}

+ 2 - 2
internal/modules/printer/service/service.go

@@ -36,12 +36,12 @@ func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo
 		}
 	} else {
 		// USB → 使用 CSN SDK 直连
-		err = initCSN(sdkDllPath)
+		err = InitCSN(sdkDllPath)
 		if err == nil {
 			name := printer.PortName
 			// 如果配置的是 "USB" 或 "auto",自动枚举
 			if name == "USB" || name == "auto" || name == "" {
-				name = csn_EnumUSB()
+				name = Csn_EnumUSB()
 				if name == "" {
 					name = printer.PortName
 				}