Форум сайта python.su
0
ПРивет всем. Появилась проблема не могу ее решить, может кто то сможет мне подсказать?
Я использую две библиотеки. Первая: telnetlib - через нее я подключаюсь к устройству и получаю поток данных NMEA. Вторая библиотка: pynmea - библиотека для работы с данными формата NMEA.
Вот описание этих двух библиотек:
http://docs.python.org/2/library/telnetlib
https://code.google.com/p/pynmea/
Через сам телнет данные выглядят как на файле. В итоге, мне нужно иметь возможность получать нужные данные из потока.
Мой код для получения данных:
import getpass
import sys
import telnetlib
HOST = “192.168.1.1”
tn = telnetlib.Telnet(HOST)
tn.write(“stty -F /dev/ttyO3 4800”)
tn.write(“cat /dev/ttyO3”)
А вот дальше как правильно настроить работу библиотеки pynmea не знаю.
и все самостоятельные попытки заканчивались ничем(
Спасибо всем неравнодушным ))
Отредактировано robot_chickn (Апрель 10, 2013 14:55:54)
Прикреплённый файлы:
telnet.JPG (114,3 KБ)
Офлайн
33
После отправки команды через телнет:
data = tn.read_all() gpgga = nmea.GPGGA() gpgga.parse(data)
Офлайн
0
почему то после
data = tn.read_all()
программа как будто бы зависает. мой код:
import getpass
import sys
import telnetlib
HOST = “192.168.1.1”
tn = telnetlib.Telnet(HOST)
print “telnet true”
tn.write(“stty -F /dev/ttyO3 4800”)
print “1 true”
tn.write(“cat /dev/ttyO3”)
print “2 true”
from pynmea import nmea
data = tn.read_all()
print “1”
gpgga = nmea.GPGGA()
print “2”
gpgga.parse(data)
print “3”
print gpgga.latitude
последнее что я вижу при включение это: 2 true
Офлайн
33
Telnet.read_all()
Read all data until EOF; block until connection closed.
Если такой режим вам не подходит, то просто используйте другой метод чтения.
Там их чуть меньше 10.
Офлайн
0
у меня работает чтение только: tn.read_some() я могу прочитать непосредственно, что мне пишет телнет, но когда я подключаюсь к GPS, то не получается считать данные с него. Пробовал практически все команды.
Если делать все то же самое в ручную через командную строку, то данные приходят. Смотрите файл в первом сообщении.
Что можете посоветовать?
Офлайн
33
А GPS у вас точно имеет адрес 192.168.1.1?
Соединение то существует?
Что возвращает tn.read_some()?
Офлайн
173
Думаю, еще не хватает новой строки в конце команд
tn.write("stty -F /dev/ttyO3 4800\n") ...
Отредактировано reclosedev (Апрель 10, 2013 18:05:24)
Офлайн
0
reclosedevСпасибо большое! Действительно этого не хватало, теперь могу через print выводить полученную информацию на экран. Только вот почему то не работает до сих пор pynmea.
Думаю, еще не хватает новой строки в конце команд
Офлайн