PDA

Просмотр полной версии : Вывод текста на СП3хх



Lexx225
28.09.2024, 02:48
Добрый день!

Подскажите пожалуйста, где можно прочитать про текстовые дисплеи панели поподробнее. В руководстве очень сухо и не совсем понятно.
Задача простая. Нужно выводить на текстовом дисплее ряд предустановленных значений (типа Err1, dat и т.д.). Если это делать через текстовый ввод, то при правильной установке номера начального регистра и длины в свойствах дисплея все выводится нормально. А как такое организовать макросом или функциональной областью?
Есть какое-либо расширенное по сравнению с РЭ от панели руководство? Методом тыка добился только через переменные типа char в макросе вывод по одному текстовому символу в каждом дисплее.

Спасибо.

petera
28.09.2024, 05:39
Добрый день!

Подскажите пожалуйста, где можно прочитать про текстовые дисплеи панели поподробнее. В руководстве очень сухо и не совсем понятно.
Задача простая. Нужно выводить на текстовом дисплее ряд предустановленных значений (типа Err1, dat и т.д.). Если это делать через текстовый ввод, то при правильной установке номера начального регистра и длины в свойствах дисплея все выводится нормально. А как такое организовать макросом или функциональной областью?
Есть какое-либо расширенное по сравнению с РЭ от панели руководство? Методом тыка добился только через переменные типа char в макросе вывод по одному текстовому символу в каждом дисплее.

Спасибо.

можно использовать стандартную функцию sprintf()
и сразу "печатать" в Текстовый дисплей, например PSW[1000], нужной длины.
Типа

sprintf((char*)&PSW[1000], "My Text");

Поддерживается форматирование.
Например печать даты времени (дата и время в регистрах PSW30..PSW35 в двоично-десятичном формате)


sprintf((char*)&PSW[1000], "%4X-%2.2X-%2.2X %2.2X:%2.2X:%2.2X ", PSW[30], PSW[31], PSW[32], PSW[33], PSW[34], PSW[35]);

Печатаем в Текстовый дисплей PSW[1000] (десять регистров PSW1000...PSW1009)
Результат - строка вида 2021-07-22 13:36:15

Только с кириллицей в символьных строках нужно извращаться
например, для вывода сообщения
'Авария в шкафу №....'


int Num;
Num = 10;
sprintf((char*)&PSW[1000], "\xc0\xe2\xe0\xf0\xe8\xff\x20\xe2\x20\xf8\xea\xe0\ xf4\xf3\x20\xb9\x31 %d", Num);

petera
28.09.2024, 06:52
Теперь о том
А как такое организовать ... функциональной областью?
можно посмотреть мое видео, если ютуб у Вас работает,

https://youtu.be/dH-JwMromc0?t=600
Там правда о том как всего одной кнопкой напечатать целую строку, но можно сделать аналогично и ф. областью с функцией "Присвоить значение"

78957

78958

78959

ЗЫ
Этот пример с "готовыми" ф.областями во вложении

Lexx225
28.09.2024, 08:50
Спасибо огромное!!

Через sprintf все отлично заработало.

Алексей