Serielle ?

  • 1
  • 2
  • 3
  • 4
  • Seite 2 von 4
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Serielle ?

 · 
Gepostet: 02.08.2015 - 20:47 Uhr  ·  #9
Hi Frank,

als Satzkennung würde ich immer das gleiche Zeichen (Bei NMEA ist das das "$") verwenden und dann kannst du senden so viel du willst.

Code
Process ReadGPS(20,20:iData);
  Begin
    WaitPipe(RXBuffer);                         // Warte auf Daten im Puffer
    Read(SerInp, Temp);                         // Puffer lesen

    If Temp='$'                                 // Wenn Puffer='$' (Datensatzanfang)
      then
        Read(SerInp, Temp6);
        If Temp6 = 'GPRMC,'
          then
            Read(SerInp, NMEA.Time_UTC, ',');   // GSP Time in UTC
            Read(SerInp, NMEA.Status, ',');     // A=data valid or V=data not valid
            Read(SerInp, NMEA.Latitude, ',');   // ddmm.mmmm
            Read(SerInp, NMEA.Lat_Ind, ',');    // N=north or S=south
            Read(SerInp, NMEA.Longitude, ',');  // dddmm.mmmm
            Read(SerInp, NMEA.Log_Ind, ',');    // E=east or W=west
            Read(SerInp, NMEA.Speed, ',');      // variable speed in knots
            Read(SerInp, NMEA.Angle, ',');      // variable lenght in degrees
            Read(SerInp, NMEA.Date, ',');       // GPS Date ddmmyy
            Read(SerInp, NMEA.Magnetic, ',');   // Magnetic declinason
            Read(SerInp, NMEA.Checksum1, ',');
            NewNMEA:=true;
          EndIf;

        If Temp6 = 'GPGGA,'
          then
            Read(SerInp, NMEA.Time_UTC, ',');   // GSP Time in UTC hhmmss.sss
            Read(SerInp, NMEA.Latitude, ',');   // ddmm.mmmm
            Read(SerInp, NMEA.Lat_Ind, ',');    // N=north or S=south
            Read(SerInp, NMEA.Longitude, ',');  // dddmm.mmmm
            Read(SerInp, NMEA.Log_Ind, ',');    // E=east or W=west
            Read(SerInp, NMEA.StatusDummy, ',');// 0=Invalid, 1=Valid SPS, 2=Valid DGPS, 3=Valid PPS
            Read(SerInp, NMEA.Sat_Track, ',');  // Number of sat in view and used in solution
            Read(SerInp, NMEA.H_Dilution, ','); // dilution error
            Read(SerInp, NMEA.Height, ',');     // height over see
            Read(SerInp, NMEA.Height_Unit, ',');
            Read(SerInp, NMEA.DGPS_Time, ',');
            Read(SerInp, NMEA.DGPS_ID, ',');
            Read(SerInp, NMEA.Checksum2, ',');
          EndIf;
      EndIf;
  End ReadGPS;

Gruss
Harry
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 18:14 Uhr  ·  #10
Hier unter diesen Thema muss ich doch noch was schreiben.

Ich habe jetzt sehr viel Zeit mit Float verbracht, saubere Sache muss ich sagen,
nur geht da auch sehr viele Takte (Zeit) drauf. Aber auch wirklich, einfach zu senden.
Write(LCDout, FloatToStr(MyFloat:7:3:'0'));

Da ich auch mit LongInt Arbeiten könnte (4Byte) weil ich in meiner Berechnung nicht
über 1kkk komme, würde ich gerne 4 Bytes an die Serielle senden.


Wie würdet ihr ein LongInt 4 Byte senden ?

Mit
SerOut(hi(MyLongx))
SerOut(lo(MyLongx))
würden noch 2 Byte fehlen.


Mit
Write(SerOut,LongToStr(MyLongInt));
Geht mir auch noch zu viel Zeit drauf.


Gruß Frank
Harald_K
 
Avatar
 
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 18:38 Uhr  ·  #11
probiers doch mit

serout(hi(hiword(long));
serout(lo(hiword(long));
serout(Hi(loword(long));
serout(lo(loword(long));

Die Reihenfolge dabei beliebig ... üblich ist lobyte first und loword first ... dann gehts auch nahtlos nach delphi oder sowas...


oder du legst ein array[0..3] of byte über die long, dann kannst du das direkt per Schleife senden:
for i := 0 to 3 do
serout(array[i]);
endfor;

oder seroutblock(long) nehmen ...
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 18:50 Uhr  ·  #12
Hallo Harald,

Da bekomme ich keine Probleme mit dem senden, wird so von AVRco angenommen.

serout(hi(hiword(MyLong)));
serout(lo(hiword(MyLong)));
serout(Hi(loword(MyLong)));
serout(lo(loword(MyLong)));


Das gefällt mir sehr, :3some: jetzt mal sehen wie die Daten am Copmputer ankommen.

Gruß Frank
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 988
Dabei seit: 09 / 2007
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 19:19 Uhr  ·  #13
Code

  SerOutBlock(@MyLong,4);
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 19:43 Uhr  ·  #14
Hallo miparo,

das verstehe ich nicht mit diesen @


Gruß Frank
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 988
Dabei seit: 09 / 2007
Betreff:

Re: Serielle ?

 · 
Gepostet: 05.08.2015 - 20:18 Uhr  ·  #15
Hi TheBeginner,
dafür gibt es ja das Manual :)

@ Ist halt ein Pointer auf dein Longword oder sonstwas .

miparo
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: Serielle ?

 · 
Gepostet: 28.08.2015 - 06:33 Uhr  ·  #16
Guten Morgen, da ich hier mit der Seriellen schon Fragen gestellt habe, mache ich mal weiter.
Nicht immer gleich ein neues Tipic öffnen. :-)
----------------------------------------------------------------

Bin gerade mit dem TimeOut beschäftigt.
SerInpBlock_TO(MenueHeader,20);

Bei 115200Baud, habe ich mal 20 eingegeben, ich denke das sollten 20ms sein ?
Kann man den TimeOut auch berechnen bei einer Baudzeit ? Weil ich weiß nicht ob
20 zu hoch oder zu tief sind.?

Weil ich möchte schon, daß ich da so schnell wie möglich raus komme.


Gruß Frank
  • 1
  • 2
  • 3
  • 4
  • Seite 2 von 4
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.042857s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI