Найти - Пользователи
Полная версия: Настройка двух библиотек
Начало » Python для новичков » Настройка двух библиотек
1
robot_chickn
ПРивет всем. Появилась проблема не могу ее решить, может кто то сможет мне подсказать?
Я использую две библиотеки. Первая: 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 не знаю.
и все самостоятельные попытки заканчивались ничем(

Спасибо всем неравнодушным ))
Lexander
После отправки команды через телнет:
data = tn.read_all()
gpgga = nmea.GPGGA()
gpgga.parse(data)

Ну или из потока с помощью NMEAStreamer.
robot_chickn
почему то после
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
Lexander
Telnet.read_all()
Read all data until EOF; block until connection closed.

Если такой режим вам не подходит, то просто используйте другой метод чтения.
Там их чуть меньше 10.
robot_chickn
у меня работает чтение только: tn.read_some() я могу прочитать непосредственно, что мне пишет телнет, но когда я подключаюсь к GPS, то не получается считать данные с него. Пробовал практически все команды.
Если делать все то же самое в ручную через командную строку, то данные приходят. Смотрите файл в первом сообщении.
Что можете посоветовать?
Lexander
А GPS у вас точно имеет адрес 192.168.1.1?
Соединение то существует?

Что возвращает tn.read_some()?
reclosedev
Думаю, еще не хватает новой строки в конце команд
tn.write("stty -F /dev/ttyO3 4800\n")
...
robot_chickn
reclosedev
Думаю, еще не хватает новой строки в конце команд
Спасибо большое! Действительно этого не хватало, теперь могу через print выводить полученную информацию на экран. Только вот почему то не работает до сих пор pynmea.
делаю теперь вот так:
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\n”)
tn.write(“cat /dev/ttyO3\n”)
from pynmea import nmea
data = tn.read_all()
gpgga = nmea.GPGGA()
gpgga.parse(data)
print gpgga.latitude

для проверки работает или нет запускал следующее и получал данные:
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\n”)
tn.write(“cat /dev/ttyO3\n”)
while True:
print tn.read_eager()

Как мне можно сделать чтобы я смог вытаскивать широту и долготу из потока данных??
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB