Ver a proveniência

adding the channel 3, 4 for HANS600S-M TCP connection with its template

master
PC-20260115JRSN\Administrator há 2 semanas
ascendente
cometimento
fea0610ac4
2 ficheiros alterados com 92 adições e 0 eliminações
  1. +66
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  2. +26
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt

+ 66
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt Ver ficheiro

@@ -22,6 +22,9 @@ import java.io.PrintWriter
import java.io.DataOutputStream
import java.nio.charset.Charset

import java.io.BufferedReader
import java.io.InputStreamReader

// 1. Data class to store both the raw bytes and the width for XML injection
data class BitmapResult(val bytes: ByteArray, val width: Int)

@@ -270,4 +273,67 @@ open class PlasticBagPrinterService(
}
}

fun sendLaserTcpUpdateAndMark(
ip: String = "192.168.76.10",
port: Int = 45678,
textChannel3: String, // required – content for channel 3
textChannel4: String, // required – content for channel 4
text3ObjectName: String = "Text3", // EZCAD object name for channel 3
text4ObjectName: String = "Text4" // EZCAD object name for channel 4
): Boolean {
var socket: Socket? = null
var writer: PrintWriter? = null
var reader: BufferedReader? = null

try {
println("Han's Laser TCP: 正在連接 $ip:$port ...")
socket = Socket(ip, port).apply {
soTimeout = 8000 // 8秒超時,避免卡死
}

writer = PrintWriter(socket.getOutputStream(), true)
reader = BufferedReader(InputStreamReader(socket.getInputStream(), Charsets.UTF_8))

// Helper function: send command and check response
fun send(cmd: String): Boolean {
writer.println("$cmd\r\n")
writer.flush()
Thread.sleep(300) // give device time to process

val resp = reader.readLine()?.trim() ?: ""
println("命令: $cmd → 回應: $resp")
return resp.startsWith("OK")
}

// Update channel 3 text
val success3 = send("""E3_SetTextObject "$text3ObjectName" "$textChannel3"""")

// Update channel 4 text
val success4 = send("""E3_SetTextObject "$text4ObjectName" "$textChannel4"""")

// Trigger marking
val successMark = send("E3_StartMarking")

val allSuccess = success3 && success4 && successMark

if (allSuccess) {
println("Han's Laser: 更新並打標成功")
} else {
println("Han's Laser: 部分命令失敗")
}

return allSuccess

} catch (e: Exception) {
println("Han's Laser TCP 錯誤: ${e.message}")
e.printStackTrace()
return false
} finally {
reader?.close()
writer?.close()
socket?.close()
println("Han's Laser TCP 連接已關閉")
}
}

}

+ 26
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt Ver ficheiro

@@ -3,6 +3,7 @@ package com.ffii.fpsms.modules.jobOrder.web
import com.ffii.fpsms.modules.jobOrder.service.PlasticBagPrinterService
import com.ffii.fpsms.modules.jobOrder.web.model.PrintRequest
import com.ffii.fpsms.modules.jobOrder.web.model.LaserRequest
import com.ffii.fpsms.modules.jobOrder.web.model.Laser2Request
import jakarta.servlet.http.HttpServletResponse
import org.springframework.http.HttpHeaders
import org.springframework.web.bind.annotation.*
@@ -87,4 +88,29 @@ class PlasticBagPrinterController(
}
}

@PostMapping("/print-laser-tcp")
fun printLaserTcp(@RequestBody request: Laser2Request): ResponseEntity<String> {
return try {
val success = plasticBagPrinterService.sendLaserTcpUpdateAndMark(
ip = request.printerIp,
port = request.printerPort.toInt(),
textChannel3 = request.textChannel3
?: throw IllegalArgumentException("缺少 textChannel3"),
textChannel4 = request.textChannel4
?: throw IllegalArgumentException("缺少 textChannel4"),
text3ObjectName = request.text3ObjectName ?: "Text3",
text4ObjectName = request.text4ObjectName ?: "Text4"
)

if (success) {
ResponseEntity.ok("Han's Laser TCP: 更新文字並觸發打標成功")
} else {
ResponseEntity.status(500)
.body("Han's Laser TCP: 部分或全部命令失敗,請檢查連接、物件名稱或 EZCAD TCP Server")
}
} catch (e: Exception) {
ResponseEntity.status(500).body("Laser TCP Error: ${e.message}")
}
}

}

Carregando…
Cancelar
Guardar