Найти - Пользователи
Полная версия: Работа с последовательным портом
Начало » Python для новичков » Работа с последовательным портом
1 2
Queeee
Key fingerprint(gpg) = 535F A89D C3E2 9904 D792 410D DA2C 10D7 8CBB 747B - это что такое, и с чем это едят?
Queeee
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….
и так далее!!!!!!!!!!!!!
s0rg
Читать до просветления:
http://pyserial.sourceforge.net/pyserial_api.html
Queeee
Спасибо, попробую
agalen
Поищи в Интернете как работать с 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" ) )
Queeee
Спасибо, за помощь!!!!!!!!!!!!
Код :
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? а каким нибудь другим…
agalen
Обрати внимание на первую полученную строку:
1 line is $ANS,CMD,FAILED

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