Telnetlib: ничего не получает

У меня есть вопрос относительно Python`s telnetlib-Library.

import telnetlib

message= ('\x02'+'DD'+'\x03')
print message

tn = telnetlib.Telnet('IP','PORT')
tn.write(message)
while True:
   data = tn.read_all()
   if data:
       print data

Я хочу связаться с регистратором данных. Регистратор данных ожидает команды, которые выглядят следующим образом:

STX + команда + ETX

Отправив STX+команду+ETX-фразу через Putty / telnet регистратору данных, регистратор данных «отвечает», т.е. отправив текущее время.

Теперь я хочу отправить то же самое через скрипт Python в регистратор. К сожалению, я не получаю никакого ответа в оболочке Python, только пробел.

Не могли бы вы мне помочь?

С уважением, Фил


person Phil U.    schedule 18.03.2016    source источник
comment
Просто предположение: попробуйте добавить \n или \r\n в конец строки, которую вы отправляете. Также используйте print repr(data), чтобы увидеть точную возвращаемую строку.   -  person PM 2Ring    schedule 18.03.2016
comment
Еще одно предположение: вам нужно войти в регистратор данных?   -  person PM 2Ring    schedule 18.03.2016
comment
Нет. Как я упоминал в исходном вопросе, все команды работают, отправляя их через Putty...   -  person Phil U.    schedule 18.03.2016
comment
Возможно ли, что есть какая-то проблема с командой tn.read_all() после tn.write(message)? Может быть, python-скрипт должен слушать до отправки команды?   -  person Phil U.    schedule 18.03.2016
comment
Я бы согласился с предложением @PM2Ring. Добавьте новую строку в конец ваших команд. Я сделал точно это сам и провел час, задаваясь вопросом, почему мой инструмент не отвечает мне, когда он говорит через PuTTY.   -  person SiHa    schedule 18.03.2016
comment
Я пробовал: message=(\x02 + 'DD' + \x03 + \r\n) Однако, похоже, это не работает для меня. Я предполагаю, что есть ошибка при передаче команды новой строки?   -  person Phil U.    schedule 18.03.2016
comment
Не могли бы вы прокомментировать мой комментарий выше? Я пытался отправить сообщение=(\x02 + 'DD' + \x03 + \r\n) Однако результат остается прежним (даталоггер не отвечает мне). Есть ли ошибка в операторе \r\n?   -  person Phil U.    schedule 19.03.2016


Ответы (1)


Использование двойных кавычек для кода специального символа

message= ("\x02"+'DD'+"\x03")

Вы уже объявили IP-адрес и номер порта.

tn = telnetlib.Telnet('192.168.0.10',2021)
person dek.tiram    schedule 18.03.2016
comment
Почему вы думаете, что использование двойных кавычек в строковых литералах будет иметь значение? - person PM 2Ring; 18.03.2016