|
|
|
@@ -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 連接已關閉") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |