Я использую библиотеку Printooth для печати тикеров на термопринтере через Bluethoot.
На экране у меня есть список элементов. У каждого есть кнопка, чтобы напечатать их. Так что, если я нажму кнопку, чтобы напечатать один раз, все в порядке. Если я нажимаю кнопки, ожидая немного друг за другом, это тоже нормально. Печать не удалась, если я не жду достаточно времени, нажимая кнопки.
Я получаю следующую ошибку:
read failed, socket might closed or timeout, read ret: -1
У меня просто есть ClickListener для кнопок:
binding.button.setOnClickListener {
Printer.print(organisationName, item)
viewModel.editOrderStatus(item.id, item.statusId+1)
}
fun print(organisationName: String, order: Order) {
if (Printooth.hasPairedPrinter()) {
var printables = ArrayList<Printable>()
var printable = TextPrintable.Builder()
.setText(organisationName) //The text you want to print
.setAlignment(DefaultPrinter.ALIGNMENT_CENTER)
.setEmphasizedMode(DefaultPrinter.EMPHASIZED_MODE_BOLD) //Bold or normal
.setFontSize(DefaultPrinter.FONT_SIZE_LARGE)
.setUnderlined(DefaultPrinter.UNDERLINED_MODE_ON) // Underline on/off
.setCharacterCode(DefaultPrinter.CHARCODE_PC437) // Character code to support languages
.setLineSpacing(DefaultPrinter.LINE_SPACING_60)
.setNewLinesAfter(1) // To provide n lines after sentence
.build()
printables.add(printable)
Printooth.printer().print(printables)
}
}
Есть ли обходной путь для этого?