Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: Работа с принтером (RS232)

  1. #1

    Post Работа с принтером (RS232)

    Добрый день. Мне требуется выводить на печать данные техпроцесса. Для этого приобрёл термопринтер (ESC/POS) с RS232. Для работы с портом использую библиотеку CAA.SerialCom 3.5.11.

    Нужна помощь в решении следующих проблем в следующем:
    1. При выводе на печать строки, например 'Ground', она печатается- если следом вывести, например 'Tok'- то на печать выводиться 'Toknd.
    2. При выводе на печать числа Real, например 0,0 оно печатается, но после него на печать выводятся различные символы(фото во вложении). При Real to String- тоже самое, только другие символы после числового значения.

    Сразу грешил на принтер, с гипертерминалом тоже самое.

    Вложение 43224Project.jpg
    Изображения Изображения
    • Тип файла: jpg Port.jpg (135.3 Кб, Просмотров: 129)

  2. #2
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    882

    По умолчанию

    В описание одно, на скринах другое.

    По скрину - SIZEOF (String)? По умолчанию String(80). Это всегда получать и будете.
    А при изменении переменную на меньшее - будете получать прошлые хвосты в чеке.
    Пустые строки в чеке - тому подтверждение

    Длину строки определять через LEN.
    Последний раз редактировалось приборист; 19.06.2019 в 23:59.

  3. #3
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Добрый день.

    Насчет п. 1 - перед записью нового значения строку надо очищать.

    Операция типа

    StringVar := 'Tok';
    не "перезаписывает" строку, а только изменяет первые три байта.

    Причем код типа

    StringVar := '';
    тоже не "чистит" строку, а просто записывает 0x00 в ее начальный байт. Остальные байты сохраняют свои значения, в результате чего может получиться мусор.

    Для очистки можно воспользоваться функцией MemFill из библиотеки CAA Memory.

    Upd.: собственно, именно это и имел в виду Приборист.

  4. #4

    По умолчанию

    Приборист, спасибо! И Вам Евгений тоже. Попробовал через Len- всё работает отлично.
    По поводу пустых строк- после отправки строки я отправляю два раза переменную word:= 10(команда ESC/POS- LF - print and line feed).

    Не могу разобраться как отправить на принтер команды состоящие из двух значений: например печать тестовой страницы: ASCii: DC2 T (Decimal: 18 84). На печать выводит либо текст, если отправлять как строку. Либо символы из таблицы ASCII, если отправлять числовым значением.

  5. #5
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    882

    По умолчанию

    Цитата Сообщение от Verbi Посмотреть сообщение
    Не могу разобраться как отправить на принтер команды состоящие из двух значений: например печать тестовой страницы: ASCii: DC2 T (Decimal: 18 84). На печать выводит либо текст, если отправлять как строку. Либо символы из таблицы ASCII, если отправлять числовым значением.
    Каждый символ нужно перегонять в ASCII.
    Я ESC\POS писал на 2.3 - и библиотеку сам создавал. В CDS3.5 по-моему была готовая. Евгений, думаю подскажет точнее.
    В итоге формировал строку, затем перегонял ее по таблице в строку из ASCII и отправлял уже в порт на принтер.

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Я не вспоминаю готовой библиотеки.
    Verbi, в вашем случае надо отправить не строковые символы, а байты управляющей последовательности. Можно сделать это в таком стиле:

    Код:
    ...
    sMessage:   STRING;
    ...
    
    // тут добавить код очистки строки через MemFill
    
    sMessage[0] := 18;
    sMessage[1] := 84;
    
    // отправляем команду на принтер

  7. #7

    По умолчанию

    Приборист, Евгений большое спасибо! Всё получается, работает отлично даже без очистки строки. Буду доводить программу до логического завершения.

  8. #8

    По умолчанию

    Подскажите, а если подключать POS принтер с RS-232 к порту RS-485 ПЛК110 через преобразователь RS232-RS485. Такая конфигурация будет работать?

  9. #9

    По умолчанию

    Добрый день. Работать будет.


    Цитата Сообщение от Jolly Посмотреть сообщение
    Подскажите, а если подключать POS принтер с RS-232 к порту RS-485 ПЛК110 через преобразователь RS232-RS485. Такая конфигурация будет работать?

  10. #10

    По умолчанию

    Добрый день!

    Verbi,

    Можете проконсультировать или может часть кода написать для реализации вывода данных процесса на POS-принтер RS232, а также какие устройства добавляются. Может быть некий пример, т.к. пока не силен, но стремлюсь))

    Использовал порт 4, 5 (rs232) Использовал библиотеки CAA Serial COM, Owen Communication.


    Спасибо,
    Последний раз редактировалось ShikuS; 10.08.2023 в 15:58.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК150 (TCP) - (RS232) NPort 5110 ( Ethernet) - (RS232) СП270
    от AvtCom в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 02.12.2015, 17:43
  2. ПЛК150 (TCP) - (RS232) NPort 5110 ( Ethernet) - (RS232) СП270
    от AvtCom в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 29.11.2015, 17:52
  3. RS-232 -----RS-485-----RS232
    от mkv в разделе Сетевые технологии
    Ответов: 29
    Последнее сообщение: 08.08.2014, 12:41
  4. Rs232->ac3->ac4->pc(usb)
    от l33tit в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 24.08.2010, 12:28
  5. Rs232 на плк
    от Ghost.70 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 25.12.2009, 11:31

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •