我正在使用以下代码在Epson TM-T20
上使用Epson ePOS SDK for iOS
SDK打印某些内容。问题是该应用程序只打印一次。应用程序必须重新启动才能重新打印。代码有什么问题?iOS仅使用Epos2打印机打印一次
printer = Epos2Printer(printerSeries: 2, lang: 1)
printer?.setReceiveEventDelegate(self)
printer?.addText("text")
printer!.connect("TCP:192.168.1.185", timeout:Int(EPOS2_PARAM_DEFAULT))
printer!.beginTransaction()
printer?.sendData(Int(EPOS2_PARAM_DEFAULT))
printer?.endTransaction()
// printer?.disconnect()
printer?.clearCommandBuffer()
printer?.setReceiveEventDelegate(nil)
尽管在文档中使用,使用printer?.disconnect()
使得应用程序冻结,所以我不得不把它注释掉。
如果您想查看API文档,请在the SDK's download内部查看PDF。
更新: 基于答案更新的代码(应用程序仍然冻结):
func printReceipt() {
var printer: Epos2Printer?
printer = Epos2Printer(printerSeries: 2, lang: 1)
if printer == nil {
print(“Printer not found!! 11")
}
printer?.setReceiveEventDelegate(self)
printer?.addTextFont(2)
printer?.addTextSize(1, height: 1)
printer?.addText(“My Text")
printer?.addFeedUnit(10)
printer?.addCut(0)
var result: Int = Int(EPOS2_SUCCESS.rawValue)
result = Int(printer!.connect("TCP:192.168.1.185", timeout:Int(EPOS2_PARAM_DEFAULT)));
result = Int(printer!.beginTransaction())
printer?.sendData(Int(EPOS2_PARAM_DEFAULT))
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
printer?.clearCommandBuffer()
printer?.setReceiveEventDelegate(nil)
printer?.endTransaction()
printer?.disconnect()
printer = nil;
}
}
无论我叫断开(),它总是冻结的应用程序。如果我不使用它,打印机似乎被应用程序占用,以致在我之后没有其他人可以打印几分钟。 – Linus