Нужна помощь с получением и обработкой обратки из RS-232

Приветствую, коллеги,
я новичок в работе с Wirenboard.

Есть небольшая учебная задача, необходимо научиться получать обратку от устройства и разбирать её, управляю дисплеем LG через интерфейс 232.
В базе установлена плата WBE2-I-RS232 в MOD1.

Включить и выключить дисплей могу через раздел с устройствами. Но как получить обратку и разобрать её пока не могу понять, точнее небольшое понимание есть, но не работает).

Во вложении файлы с правилом, bash и диаг. лог.
screen.sh (601 байт)
screen.js (738 байтов)

Что уже сделал:

  1. Нашёл и адаптировал под свою задачу bash скрипт, положил в корень.
  2. #!/bin/bash 
    #Инициализируем порт /dev/ttyWBE0
    stty -F /dev/ttyWBE0 ospeed 9600 ispeed 9600 raw clocal -parenb -echo cs8 
    CR="$(echo -e '\r')"
    exec 4<> /dev/ttyWBE0
    cat <&4 | while :
    do
        IFS="$CR" read -r line 
        case "$line" in
        quit*)
            break
            ;;
        *)
    
    	if [[ -n "$line"  ]]; then
    	    echo $line
                    #Полученные строки шлём в MQTT
       		mosquitto_pub -t /devices/screen/controls/raw/meta/type  -r  -m text
    		mosquitto_pub -t /devices/screen/controls/raw/on  -r  -m "$line"
    	fi
    
            ;;
        esac
    done
    
    1. Создал правило wb-rules:
    2. defineVirtualDevice("screen", { // создаем виртуальный девайс
          title: "nextion screen",
          cells: {
              raw: {
                  type: "text",
                  value: ""
              },
              enabled: {
          	    type: "switch",
          	    value: false
          	},
          }
      });
      
      
      //ka 01 01\r
      defineRule("_rs485_switch_on", {
        asSoonAs: function () {
          return dev.screen.enabled;
        },
        then: function() {
          runShellCommand("/usr/bin/printf 'ka 01 01\\x0d' > /dev/ttyWBE0");
        }
      });
      
      //ka 01 00\r
      defineRule("_rs485_switch_off", {
        asSoonAs: function () {
          return !dev.screen.enabled;
        },
        then: function() {
          runShellCommand("/usr/bin/printf 'ka 01 00\\x0d' >/dev/ttyWBE0");
        }
      });
      

      приложен диагностический архив, доступен только сотрудникам поддержки
      (243,2 КБ)

      Данные по контроллеру:
      WB 8.5
      Номер партии 8.5.3A/4G1 1.3.3C-4G
      Версия DTS 851
      Версия контроллера 8.5.3
      Название релиза wb-2507
      Тип релиза stable

Я Вам советую использовать RPC. Небольшая история с примерами и ссылками на документацию: Создание своего протокола - #8 от пользователя maks0508

1 лайк

Спасибо, изучу информацию.
Но насколько я понял, данная реализация не позволяет читать информацию от устройства без запроса, т.е. устройство само не сможет что-то отправить в порт?
А мне такая возможность нужна.