【发布时间】:2017-06-28 11:41:59
【问题描述】:
我正在使用以下代码使用Epson ePOS SDK for iOS SDK 在Epson TM-T20 上打印一些东西。问题是该应用程序只打印一次。必须重新启动应用程序才能再次打印。代码有什么问题?
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;
}
}
【问题讨论】:
-
无论我在哪里调用disconnect(),它总是冻结应用程序。如果我不使用它,打印机似乎被应用程序占用,以至于在我之后的几分钟内其他人都无法打印。
-
您的发行人是否已修复?我也面临同样的问题。就我而言,它只打印一次,当我尝试第二次打印时,它会引发连接错误。我正在为目标 c 使用演示中提供的相同代码。