Перейти к содержанию
Fire Monkey от А до Я
  • 0

[Android] #13#10


estra

Вопрос

Непонятная ситуация. В отладчике под Android вижу следующую картину (см. скриншот).

Untitled-2.png

Почему то в подсказке символы представлены в восьмеричной кодировке. Нормально ли это (я ожидаю шестнадцатеричную кодировку)?

Проблема выросла из следующего. Мне нужно отправить принтеру последовательность команд в виде строки, команды разделяются #13#10. Принтер не понимает команд, и единственная причина, которую я вижу, кроется в неверной подстановке символов. Я же хочу увидеть что то вроде #13#10 или #$D#$A, как можно этого добиться?

Изменено пользователем estra
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Весь проект на скрине. Создаем новый проект FM, в обработчик нажатия кнопки пишем код со скрина и отлаживаем на устройстве. Сделайте это и посмотрите что вам покажет отладчик?

Ссылка на комментарий
  • 0
  • Администраторы

А что выдает не подсказка, а просто вывод кода символов строки? (под рукой нету андроид девайса проверить) Возможно, отладчик может врать.

Ссылка на комментарий
  • 0

Как я и предполагал, символы переноса пропадают.

device-2016-05-10-113747.jpg

Красными вертикальными линиями выделены места, где должны быть переносы. Есть идеи почему такое может быть и как исправить?

Изменено пользователем estra
Ссылка на комментарий
  • 0
37 минут назад, estra сказал:

Как я и предполагал, символы переноса пропадают.

device-2016-05-10-113747.jpg

Красными вертикальными линиями выделены места, где должны быть переносы. Есть идеи почему такое может быть и как исправить?

а попробуй просто один #13

Ссылка на комментарий
  • 0

Нужно использовать именно #13#10, ибо эта строка команд предназначена для принтера, который (по спецификации) ожидает именно такой разделитель

Untitled-1.png

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

Изменено пользователем estra
Ссылка на комментарий
  • 0

тогда непонятно, что нужно-то

если принтеру нужно CRLF, то слать ему CRLF

андроиду для переноса на экране нужен 12

для отображения и для печати требуются просто разные строки

Ссылка на комментарий
  • 0
6 минут назад, Vitaldj сказал:

А что за принтер такой?

Принтер

7 минут назад, krapotkin сказал:

тогда непонятно, что нужно-то

если принтеру нужно CRLF, то слать ему CRLF

андроиду для переноса на экране нужен 12

для отображения и для печати требуются просто разные строки

Нужно передать принтеру строку с командами, разделенными #13#10. Но когда я подготавливаю строку для передачи

// Content - TStringBuilder
b := BytesOf(Content.GetString);
b := TEncoding.Convert(TEncoding.UTF8, TEncoding.ANSI, b);
ClientSocket.SendData(b);

подозреваю, что символы #13#10 меняются на что то другое (о чем косвенно свидетельствует скрин в первом посте), в следствии чего принтер не понимает переданные команды.

Ссылка на комментарий
  • 0
2 минуты назад, estra сказал:

подозреваю, что символы #13#10 меняются на что то другое (о чем косвенно свидетельствует скрин в первом посте), в следствии чего принтер не понимает переданные команды.

А ты введи 1 команду и проверь. Ведь если одна команда, то и разделять ее не надо

Ссылка на комментарий
  • 0

Одна команда ничего не даст

Команда PRINT запускает процесс печати, но перед ней нужно указать хоть какой то контент (нет контента - нечего и печатать), а это как минимум 2 команды

Ссылка на комментарий
  • 0

документация гласит, что на мобильных платформах нет никаких других String кроме юникодных, для всего остального рекомендуют использовать Array of byte

 

Ссылка на комментарий
  • 0
1 час назад, krapotkin сказал:

андроиду для переноса на экране нужен 12

Немного сомнительное утверждение. Вот скрин

Untitled-1.png

Из него видно, что разделитель - #012, то есть восьмеричная система, что соответствует #10 в десятичной, или #$A в шестнадцатеричной. То есть андроиду для переноса нужно не 12 а 10. К тому же студия сама прекрасно справляется с подобными ситуациями, вот тот же код, но уже под винду

Untitled-2.png

Изменено пользователем estra
Ссылка на комментарий
  • 0
9 часов назад, estra сказал:

Вопрос закрыт. Проблема версий. Код не работал в XE7, а в 10 Seattle заработал.

и принтер понял, что это команды переноса строки и перевода каретки?

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...