Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2012 17:50:02

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Key fingerprint(gpg) = 535F A89D C3E2 9904 D792 410D DA2C 10D7 8CBB 747B - это что такое, и с чем это едят?



Офлайн

#2 Янв. 23, 2012 12:38:09

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Работа с последовательным портом

sypper-pit, имеют ли твои ссылки прямое отношение к моей задаче?
Ребята, развет так трудно, что ли, подсказать, ну или написать мне код, который я должен непосредственно ввести в интерпретатор, для того что бы он выдавал сообщения, снятые с приёмника….не данные о нем вроде Serial<id=0x2dbb390, open=False>(port=None, baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False), а $GPGSA,A,3,68,71,74,05,07,08,10,28,,,,,02.0,01.5,01.4*0B
$GPGGA,N,3,33,34,434,343,34,34,44,,,,,,22, 0.0….
и так далее!!!!!!!!!!!!!



Офлайн

#3 Янв. 23, 2012 12:42:29

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Читать до просветления:
http://pyserial.sourceforge.net/pyserial_api.html

Офлайн

#4 Янв. 23, 2012 13:31:00

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Спасибо, попробую



Офлайн

#5 Янв. 23, 2012 14:05:26

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Поищи в Интернете как работать с COM-портом без программирования - через putty или HyperTerminal.
Даже в PySerial есть терминал: python -m serial.tools.miniterm

Команда print ser выдает данные об объекте, а не то, что поступает по порту.

Конец строки - это символ, которым разделяются строки. Т.е. надо было писать так:

# Было: ser.write('$CMD,CHN,1,MSG,POS,0')

# Надо:
ser.write('$CMD,CHN,1,MSG,POS,0\r')
# Или так: ser.write('$CMD,CHN,1,MSG,POS,0\n')
Вот код, который выдает все из порта:
import serial, sys

ser = serial.Serial(0, timeout = 1)
while True:
data = ser.read( 10 )
sys.stdout.write( data.replace( "\r", "\n" ) )



Отредактировано (Янв. 23, 2012 14:21:26)

Офлайн

#6 Янв. 23, 2012 20:57:53

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Спасибо, за помощь!!!!!!!!!!!!
Код :
import serial
try:
i = 0
s = serial.Serial('COM3', 115200,timeout = 1, xonxoff=True, dsrdtr = True, interCharTimeout = True)
s.write('$CMD,CHN,1,MSG,POS,1\n')
while i < 10:
a = s.readline()
i = i + 1
print i,'line is', a
s.close()
except:
print ‘d3==============================’


результат работы :

1 line is $ANS,CMD,FAILED


2 line is $GPGGA,063446.00,,,,,0,00,0.0,,M,,M,,*65


3 line is $GPGSA,M,1,,,*12


4 line is $GLGSA,M,1,,,*0E


5 line is $GPRMC,063446.00,V,,,,,,,,00.00,W,N*07


6 line is $GPGGA,063447.00,,,,,0,00,0.0,,M,,M,,*64


7 line is $GPGSA,M,1,,,*12


8 line is $GLGSA,M,1,,,*0E


9 line is $GPRMC,063447.00,V,,,,,,,,00.00,W,N*06


10 line is $GPGGA,063448.00,,,,,0,00,0.0,,M,,M,,*6B



Информация с порта начала считываться и выводиться на экран, но вот посланная команда s.write('$CMD,CHN,1,MSG,POS,0\r')
не работает:( окончания менять пробовал…странно все это.



закрадывается подозрение, что команды посылать нужно не оператором write? а каким нибудь другим…



Отредактировано (Янв. 23, 2012 21:33:09)

Офлайн

#7 Янв. 24, 2012 05:26:49

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Обрати внимание на первую полученную строку:
1 line is $ANS,CMD,FAILED

Очень похоже на ответ на твою команду.



Офлайн

#8 Янв. 24, 2012 11:21:40

Queeee
От:
Зарегистрирован: 2012-01-18
Сообщения: 42
Репутация: +  -1  -
Профиль   Отправить e-mail  

Работа с последовательным портом

Спасибо всем за помощь, с подачей команд и со считыванием из порта разобрался. Там, кстати, проблема была в форме записи: нужно было правильное окончание сделать s.write('$CMD,RESET\r\n') , и вот в этом \r\n и была загвоздка. Честно говоря, я так и не понял смысла этих \r\n…но результат работы устраивает



Отредактировано (Янв. 24, 2012 11:21:56)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version