Problem with searial port reading
정보
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
Hello i am tryng to read from a serial port device.The divice is a parallax gps receiver. The output of the device is NMEA protocol.The output looks like this:
$GPGSV,3,3,11,18,07,324,25,07,03,091,,11,01,058,*45 $GPRMC,110725.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6C $GPGGA,110726.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*5E $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110726.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6F $GPGGA,110727.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*5F $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110727.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6E $GPGGA,110728.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*50 $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110728.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*61 $GPGGA,110729.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*51 $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110729.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*60 $GPGGA,110730.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*59 $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPGSV,3,1,11,26,82,234,40,28,70,055,,15,41,306,21,08,38,074,*7E $GPGSV,3,2,11,17,33,137,44,27,29,289,22,05,17,215,38,09,11,282,16*7E $GPGSV,3,3,11,18,07,324,25,07,03,091,,11,01,058,*45 $GPRMC,110730.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*68 $GPGGA,110731.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*58 $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110731.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*69 $GPGGA,110732.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*5B $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110732.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6A $GPGGA,110733.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*5A $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110733.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6B $GPGGA,110734.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0,M,,0000*5D $GPGSA,A,3,17,26,18,05,15,09,,,,,,,2.1,1.4,1.6*30 $GPRMC,110734.000,A,4313.3418,N,02756.2409,E,0.00,248.59,070612,,,A*6C $GPGGA,110735.000,4313.3418,N,02756.2409,E,1,06,1.4,164.7,M,37.0
I want to read only the rows that contain %GPGSV in the beggining.So far i am using this code: serialObject = serial('COM6');
set(serialObject, 'BaudRate', 4800);
set(serialObject, 'Parity', 'none');
set(serialObject, 'ReadASyncMode', 'continuous');
set(serialObject, 'StopBits', 1);
set(serialObject, 'FlowControl', 'none');
fopen(serialObject);
data='';
while isempty(strmatch('$GPGSV',data))
data = fscanf(serialObject);
end
The problem is i receive only one row. Can you guys please help me receive a continuous string of data.
Also after acquiring only the %GPGSV rows i want to separate all the data between the commas.
댓글 수: 4
Walter Roberson
2012년 6월 16일
I suggest replacing the fscanf() line with
data = fgetl(serialObject);
but that is more a matter of taste (fscanf() is designed for formatted reads but you are using it to get the entire line.)
Mihail Kolev
2012년 6월 17일
Mihail Kolev
2012년 6월 18일
Walter Roberson
2012년 6월 18일
Without getting into complicating details: Yes, you can only expect to be able to read one line at a time.
What happens on the second fgetl() ?
답변 (0개)
이 질문은 마감되었습니다.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!