• Как записать команду в COM-порт АТС Harris 20-20 при помощи pySerial?

    @HabraXel Автор вопроса
    Загвоздка оказалась в том, что в зависимости от типа подключения к оборудованию станции Harris 20-20 (напрямую либо через модем) команду ETX необходимо посылать несколько раз.
    В ходе работы я сделал 2 функции: одна проверяет доступен ли порт:
    def state_port(port):                           # функция, проверяющая порт на "открыт/не открыт"
        try:
            ser = serial.Serial(port,               # параметры порта
                                baudrate=9600,
                                parity=serial.PARITY_NONE,
                                stopbits=serial.STOPBITS_ONE,
                                bytesize=serial.EIGHTBITS,
                                timeout=1)
            return True
            ser.close()
        except:
            return False

    Другая - пытается открыть порт:
    def open_port(buff, j):                         # функция, открывающая порт
        while j != 0:
            ser.write('\x03'.encode())
            buff = ser.readlines()
            for i in buff:
                buff_jr = i.decode()
                if 'Welcome' in buff_jr:
                    return True
            else:
                j -= 1

    Когда удаётся успешно подключиться к станции она в порт отправляет приветствие, в котором присутствует слово 'Welcome'. Если функция отыскивает это слово в выводе порта, то она возвращает True. Если нет - False
    Используя эти функции, уже не составляет проблемы открыть порт на станции, взять системные дату и время и ввести их в станцию, засинхронизировав таким образом время.
    Ответ написан
    Комментировать