2014-02-05 6 views
1

NMEA 데이터를 반환하는 GPS 모듈이 있습니다. 다음 코드를 사용하여 반환하는 모든 데이터를 인쇄하려고 할 때 this이 표시됩니다.파이썬에서 직렬 데이터 읽기

while True: 
try: 
    rcv = port.read() 
    print rcv 

그런 다음 NMEA 데이터 클리너를 읽도록 수정했습니다. 그것은 다음과 같습니다

port = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=10.0) 

line = [] 
print("connected to: " + port.portstr) 

while True: 
    try: 
     rcv = port.read() 
    except: 
     rcv = '' 


    line.append(rcv) 

    if rcv == '\n': 
     line = "".join(line)   
     print line 
     line = [] 

출력이 그 다음과 같습니다

$ GPGGA, 183345.000,5023.3424, N, 01857.3817, E, 1,7,1.25,313.3, M, 42.1, M, * 53

$ GPGSA, A, 3,09,26,28,08,15,18,17 ,,,,,, 1.52,1.25,0.88 * 06

$ GPRMC, 183345.000하는 , 5023.3424, N, 01857.3817, E, 0.40,55.07,050214 ,,, A * 54

$ GPVTG, 55.07, T,, M, 0.40, N, 0.74, K, A * 0D

$ GPGGA, 183346.000,5023.3423, N, 01857.3817, E, 1,7,1.25,313.3, M, 42.1, M ,, * 57

$ GPGSA, A, 3,09,26,28,08,15,18,17 ,,,,,, 1.52,1.25,0.88 * 06

문제 때로는 쉼표 나 기타 데이터가 누락되어 NMEA 파서가 잘못 읽었을 수 있습니다. 시리얼을 통해 전체 NMEA 프레임을 읽을 수있는 더 좋고 깨끗한 방법이 있습니까?

답변

3

읽기 대신 readline을 사용할 수 있습니다. EOL을 수신 할 때까지 계속 문자를 읽습니다.