Ich habe ein C++ Programm läuft auf einem Intel Edison lesen einige GPS-Daten von einem seriellen Anschluss und echo es zurück zur Konsole.C++ Eclipse Konsole Kodierung Klartext als andere Zeichen
Dieser Teil funktioniert gut, aber wenn die Zeichenfolgen in der Konsole gelesen werden, haben sie Zeichen, die nicht dort sein sollten, wie "Ž". Ich vermute, dass etwas mit der Codierung in der Eclipse-Konsole/G ++ zu tun hat, und denkt, dass einige der Messwerte Zeichencodes sind.
Hier ist eine Ausgabe von der Eclipse-Konsole:
$GPVTG,,T,,M,0.041,N,0.075,K,A*24
$GPGGA,225153.00,5206.75433,N,12206.88881,W,1,10,1.03,582.1,M,-15.6,M,,*6F
$GPGSA,A,3,32,02,12,14,24,06,03,19,17,25,,,1.84,1.03,1.53*05
$GPGSV,3,1,11,ŽN
-> 02,51,176,30,03,10,027,17,06,60,088,33,12,68,295,36*79
$GPGSV,3,2,11,14,10,316,30,17,20,072,27,19,45,069,40,24,36,215,35*7E
$GPGSV,3,3,11,25,29,301,28,29,05,254,,32,07,305,33*40
$GPGLL,5206.75433,N,12206.88881,W,225153.00,A,A*78
.53*05
$GPGSV,3,1,11,ŽN
Und hier ist ein Teil der Ausgabe als direkt aus dem seriellen Anschluss an der Edison (cat /dev/ttyMFD1
) lesen:
$GPVTG,,T,,M,0.048,N,0.090,K,A*26
$GPGGA,225407.00,5206.75339,N,12206.88816,W,1,10,1.02,584.2,M,-15.6,M,,*6C
$GPGSA,A,3,32,02,12,14,24,06,03,19,17,25,,,1.80,1.02,1.49*0B
$GPGSV,3,1,11,02,52,176,15,03,10,026,20,06,59,086,29,12,69,295,41*76
$GPGSV,3,2,11,14,09,316,29,17,19,072,29,19,44,070,34,24,35,215,32*74
$GPGSV,3,3,11,25,30,301,29,29,06,254,,32,06,304,17*4C
$GPGLL,5206.75339,N,12206.88816,W,225407.00,A,A*7F
$GPRMC,225408.00,A,5206.75337,N,12206.88814,W,0.058,,170616,,,A*6F
Ich habe versucht, Alle Kodierungsoptionen, die auf der Registerkarte "run configurations common" verfügbar sind, erzeugten jedoch alle seltsame Ergebnisse, sogar chinesische Zeichen!
Der entsprechende Code ist char array[255];
die Puffer zu initialisieren, und dann dazu die seriellen Daten in die Puffer und gibt es in die Konsole zu lesen:
while(true){
dev->read(array,255);
std::cout<<"-> "<<array<<std::endl;
}
Ich glaube nicht, dass dies eine Sonnenfinsternis ist. Sieht so aus, als ob du nach einer nicht abgeschlossenen Zeichenkette etwas Mist liest oder druckst. Die Token stehen alle nebeneinander. '$ GPGSV, 3,1,11, € N02,51,176,30,03,10,027,17,06,60,088,33,12,68,295,36 * 79' sieht aus wie es sein sollte' $ GPGSV, 3,1, 11,02,51,176,30,03,10,027,17,06,60,088,33,12,68,295,36 * 79 'und die Prüfsumme stimmt überein. – user4581301
@ user4581301 Ich denke, dein Recht, es sieht so aus, als ob ich das Problem jetzt gefunden habe, nur noch ein paar Tests, um sicher zu sein –