Pull to refresh

Comments 5

Не знаком с питоном, поэтому извините, если задаю глупый вопрос. Можно ли с помощью этого скрипта прослушать данные, которые бегают по СОМ-порту? Скажем, мониторить поток Modbus или какой-то протокол телемеханики.
Я в свою очередь никогда не работал с Modbus :). После прочтения соотв. статьи в википедии мне кажется, что
Modbus мониторить можно, но только в том случае, если в качестве ADU используется Modbus ASCII.

Скрипт написан в предположении, что устройства, подключённые к COM-порту, обмениваются текстовыми строчками, заканчивающими символом конца строки. Если используется какой-то бинарный протокол, то ничего хорошего не выйдет.

Чисто теоретически его можно переделать так, чтобы он умел работать и с бинарными протоколами, но я не очень понимаю, зачем это может быть нужно. Он является альтернативным вариантом решения задачи, описанной в статье от Амперки, на которую я ссылаюсь в самом верху — в красивой форме (с этим, конечно, статья подкачала :) ) выводить в браузере строки, читаемые из COM-порта.

«Если используется какой-то бинарный протокол, то ничего хорошего не выйдет.» Это я пропустил.
Но даже в случае бинарного протокола, можно мониторить сам факт передачи чего-либо по СОМ-порту, без проверки передаваемых данных. Мне интересно это как мониторинг системы телемеханики, максимально размещенный к источнику информации.
Если функцию get_full_line_from_serial переписать следующим образом:
captured_count = 0
def get_full_line_from_serial():
    """ returns the count of readed bytes since start as a string
        if something received or None
        Uses global variables 'ser' and 'captured_count'
    """
    global captured_count
    part = ser.readline()
    if part:
        captured_count += len(part)
        return str(captured_count)
            
    return None

то будет выводится количество байт, прочитанных из COM-порта с момента старта сервера. Если количество меняется, значит передачи идут. Такой способ мониторинга факта передачи годится?

Но, по-моему, это будет интересно только в течении первых пяти минут. Дальше захочется собирать и протоколировать весь трафик. Чтобы иметь возможность проанализировать возникающие проблемы как можно детальнее. И это правильно. Но в этом случае рассмотренный в статье механизм — это, как мне кажется, не самый подходящий вариант.
Собирать и протоколировать не нужно. Здесь более важно проверять на «адекватность». Даже на основе простого изменения количества байтов на порту можно сделать выводы: 1.железяка воткнута в нужный порт, 2. железяка жива и что-то передает. При отсутствии идеального, можно воспользоваться тем, что есть. :)
В любом случае спасибо за ответы.
Sign up to leave a comment.

Articles

Change theme settings