Guten Abend. ich bin neu in Sachen µC und auch neu in diesem Forum. ich habe mich bis jetzt nur wenig mit dem µC befasst. und das nur in Basic. habe im Netz folgendes projekt gefunden: http://www.kh-gps.de/gpsdec1.htm finde ich sehr interresant, aber ich brauche die Geschwindigkein natürlich in km/h, und nicht in Knoten. habe den Quelltext angesehen, und finde trotz aller Bemühungen keine Stelle, wo die Daten in Knoten umgewandelt werden, um diedann wiederrrum in km/h zu umwandelt. Könnte mir jemand helfen? Quelltext: $regfile = "m8def.dat" $crystal = 16000000 $baud = 4800 Config Lcd = 16 * 2 Cls Cursor Off Dim C As Byte Dim I As Byte Dim Time As String * 6 Dim Av As String * 2 Dim Lat As String * 8 Dim Ns As String * 2 Dim Lon As String * 9 Dim Ew As String * 2 Dim Spd As String * 6 Dim Crs As String * 6 Dim Leng As Byte Dim Mrk As String * 2 Dim Xx As Bit Declare Sub Wait_for_string(byval S As String) Declare Function Read_string() As String Wait 1 Upperline Lcd "WAITING FOR DATA" Wait 3 Mrk = "-" Config Serialin = Buffered , Size = 100 ' Konfig. der ser. Eingabe Enable Interrupts ' $GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh Do Call Wait_for_string( "$GPRMC,") ' Warte auf $GPRMC Time = Read_string() Av = Read_string() Lat = Read_string() Leng = Len(lat) - 1 Lat = Left(lat , Leng) Ns = Read_string() Leng = Len(ns) - 1 Ns = Left(ns , Leng) Lon = Read_string() Leng = Len(lon) - 1 Lon = Left(lon , Leng) Ew = Read_string() Leng = Len(ew) - 1 Ew = Left(ew , Leng) Spd = Read_string() Leng = Len(spd) - 1 Spd = Left(spd , Leng) Crs = Read_string() Leng = Len(crs) - 1 Crs = Left(crs , Leng) Upperline Locate 1 , 2 Lcd Lat ; Ns Locate 1 , 12 Lcd Spd Lowerline Lcd Lon ; Ew Locate 2 , 12 Lcd Crs If Av = "V," Then Av = "*" If Av = "A," Then Av = " " Locate 1 , 1 Lcd Av If Xx = 1 Then Mrk = "-" If Xx = 0 Then Mrk = "+" Toggle Xx Locate 1 , 11 Lcd Mrk Loop End '------------------------------------------------------ Sub Wait_for_string(byval S As String) As String Local Ii As Byte Local Cc As Byte Ii = 1 M1: Cc = Waitkey() If Cc <> Mid(s , Ii , 1) Then Goto M1 Else Incr Ii If Ii > Len(s) Then Goto M2 Goto M1 End If M2: End Sub '------------------------------------------------------ Function Read_string() As String Local Cc As Byte Local Ss As String * 10 Ss = "" Do Cc = Waitkey() Ss = Ss + Chr(cc) Loop Until Cc = "," Read_string = Left(ss , 10) End Function End
>und finde trotz aller Bemühungen keine >Stelle, wo die Daten in Knoten umgewandelt werden da wird nix in Knoten umgewandelt, die Strings sind wohl in Knoten. Da hat jemand beim Programmieren Tastendrücke gespart sonst müsste man nicht raten ob z.B. Spd Speed bedeutet
Hallo Björn, bin weder Basic-Programmierer noch kenne ich mich besonders gut mit GPS aus, aber aus dem Code meine ich zu lesen, dass Spd die Geschwindigkeit ist. Die scheint schon in Knoten vom GPS-Empfänger zu kommen, denn umgerechnet wird hier nichts. Du mußt Dir eigentlich nur Spd greifen, und von Knoten in km/h umrechnen. Gruß, Nils
Da ist die Stelle: > Spd = Read_string() > Leng = Len(spd) - 1 > Spd = Left(spd , Leng) Der einfache Weg: Aus dem String Spd machst du eine float Zahl tempo. Wie man das in Basic macht weiss ich nicht. Gibt es da überhaupt einen Befehl ? tempo ist jetzt noch in Knoten. Umrechnen in km/h = Knoten * 1.85 ungefähr. tempo = tempo * 1.85; Dann aus der float Zahl tempo einen neuen String in Spd machen. Fettig! Mit Festkommaarithmetik spart man sich den float Kram. Dann muss man den String Spd aber wohl von Hand in Vorkomma- und Nachkommastellen zerlegen.
danke erstmal an alle! die Überlegung ist: Dim kmh as byte Spd = Read_string() Leng = Len(spd) - 1 Spd = Left(spd , Leng) kmh = Spd*1.85 Upperline Locate 1 , 2 Lcd Lat ; Ns Locate 1 , 12 Lcd kmh so im etwa?
>Dim kmh as byte byte geht nur bis 255 km/h ;) >Spd = Read_string() >Leng = Len(spd) - 1 >Spd = Left(spd , Leng) Ist Groß-/Kleinschreibung in Basic egal ? >kmh = Spd*1.85 Geht nicht. Spd ist ein Text. Aus Spd musst du erst eine Zahl machen bevor du multiplizieren kannst. > Lcd kmh kmh ist eine Zahl. Aus der musst du erst einen Text machen bevor du sie auf dem Display ausgeben kannst.
und noch was: es steht da auf der Seite "Insgesamt kommt man für alle Bauteile des Decoders auf Kosten in der Größenordnung von etwa Euro 10." wie ist das gemeint? mit dem µC und lcd? und was ist mit dem GPS empfänder? ich glaube ich habe was falsch verstanden, oder? ist das normale RS232 GPS-Empf? wo krigt man den? bei eBay sind schon alle USB, rs232 findet man noch kaum. klärt mich bitte auf. Danke schön ^^
>byte geht nur bis 255 km/h ;) reicht ;) >Spd ist ein Text. Aus Spd musst du erst eine Zahl machen wie kann man das machen? das wird ja schon so Empfangen, oder?
>>Spd ist ein Text. Aus Spd musst du erst eine Zahl machen >wie kann man das machen? Das steht im Handbuch deines BASIC Compilers. > das wird ja schon so Empfangen, oder? Rüchtüch.
Mit dem Befehl "VAL" kannst Du die Werte, die Du aus dem String herausgesägt hast, in einen numerischen Wert umwandeln. MfG Paul
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.