Aug-11-2017, 09:49 AM
Hi,
I am trying to write a code that can receive a stream of NMEA sentences from my GPS via serial port, parse the sentence and write it as a different type of NMEA sentence to another serial port.
This is what I have so far:
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
If I just write msg without the str I get the following error:
Traceback (most recent call last):
File "\My Documents\LiClipse Workspace\NMEA converter\project.py", line 20, in <module>
ser.write(msg)
File "\Downloads\pyserial-3.4\serial\serialwin32.py", line 308, in write
data = to_bytes(data)
File "\Downloads\pyserial-3.4\serial\serialutil.py", line 66, in to_bytes
return bytes(bytearray(seq))
TypeError: 'GGA' object is not iterable
I'm pretty new to Python
Can anyone please push me in the right direction here? Would be much appreciated.
I am trying to write a code that can receive a stream of NMEA sentences from my GPS via serial port, parse the sentence and write it as a different type of NMEA sentence to another serial port.
This is what I have so far:
import serial import pynmea2 import time #define COM-ports port2 = "COM5" ser2 = serial.Serial(port2, 4800, timeout=0) port = "COM6" ser = serial.Serial(port, 4800, timeout=0) #read from COM-port, parse NMEA and send to new COM-port streamreader = pynmea2.NMEAStreamReader() while True: data = ser2.read() for msg in streamreader.next(data): msg = pynmea2.GGA('GP', 'GGA', (msg.lat, '1929.045', 'S', '02410.506', 'E', '1', '04', '2.6', '100.00', 'M', '-33.9', 'M', '', '0000')) while True: ser.write(str(msg)) time.sleep(1) #close COM-ports ser.close() ser2.close()My problem is that the parsed sentence is written as a continuous string, whilst I would like it to be written as a list like this:
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
$GPGGA,4425.8867,1929.045,S,02410.506,E,1,04,2.6,100.00,M,-33.9,M,,0000*64
If I just write msg without the str I get the following error:
Traceback (most recent call last):
File "\My Documents\LiClipse Workspace\NMEA converter\project.py", line 20, in <module>
ser.write(msg)
File "\Downloads\pyserial-3.4\serial\serialwin32.py", line 308, in write
data = to_bytes(data)
File "\Downloads\pyserial-3.4\serial\serialutil.py", line 66, in to_bytes
return bytes(bytearray(seq))
TypeError: 'GGA' object is not iterable
I'm pretty new to Python
