ESC POS Bluetooth принтер очистить буфер - PullRequest
0 голосов
/ 08 октября 2018

Я использую React Native для создания приложения, которое печатает билеты.Я успешно печатал на принтере Bluetooth 5802 и 5802-LD от компании Zjiang.Есть проблема, которую я не знаю точно из источника, но когда Java-метод не ждет, пока принтер действительно напечатает, а просто пишет инструкцию команды, что приводит меня к проблеме, что я заканчиваю тем, что посылаю все команды печати одновременно,Иногда это приводит к тому, что в принтере заканчивается бумага, и я хотел бы очистить буфер вместо продолжения печати. ​​

Здесь вы можете найти руководство по программированию, где в конце 20-й страницы 76-мм страницыкоманда ESC @, которая должна очистить буфер и инициализировать принтер (снова), но это не так (мой принтер 58 мм, но также ссылается на команду ESC @). Руководство по эксплуатации содержит следующие инструкции: http://www.zjiang.com/en/init.php/service/manual enter image description here

enter image description here

На их сайте также есть пара приложений для Android, готовых для сборки на Android Studio: http://www.zjiang.com/en/init.php/service/driver enter image description here Я нашел на их примерах одну и ту же команду: enter image description here

Кажется, это работает, когда мне нужно на самом деле инициализировать печать, нопосле этого это не работает как описание руководства.У кого-нибудь есть идея или опыт работы с этими bluetooth-принтерами ESC / POS, чтобы узнать, как мне действовать?

1 Ответ

0 голосов
/ 30 января 2019

Прошло много времени с тех пор, как вы писали, но это может помочь кому-то в борьбе.

Я разработал небольшое мобильное приложение с платформой ionic 3.Одна из моих главных проблем была с услугой печати. ​​

Пользователь в конце должен был напечатать квитанцию.Я сделал uint8Array() и объединил там все десятичные числа.Я пытался также с буферами.

У меня была проблема при отправке всех данных одновременно.Принтер останавливался в той же точке.Я разбил мои переменные и вычислил их размер в байтах, чтобы увидеть, если что-то не так, но ничего не получилось.

Я пытался разбить мои окончательные переменные данные на меньшие переменные и инициализировать с помощью ESC @, но также это не сработало.

При поиске в Интернете некоторые "гуру" сказали, что вы можете ESC @ с полным пакетом 4kbytes.Я также попытался заполнить оставшуюся часть массива нулевыми символами до 4 КБ и попытаться инициализировать, но также ничего.

В конце я сделал очень «обезьянье» решение, и мне стыдно за это.

Я делаю цикл seTimout через мои меньшие uintarrays

setTimeout(() => {
    this.btSerial.write(uint8Array)
      .then(dataz => {
        console.log("WRITE SUCCESS", dataz);
      });
  }, 100 + n *100)

и, конечно, это сработало.

Я думаю, что проблема в том, что байт андроид может отправлять нативно через Bluetooth каждые несколько мс, но я не уверен.

Надеюсь, я немного помог.

Ps ..

не пытайтесь разрабатывать мобильные приложения, которые изначально используют вещи в кроссплатформенных средах.В конечном итоге вы всегда будете пытаться изучать и писать пакеты для естественного общения ..

...