Programm

Diskussionen auf Deutsch

Programm

Postby klaus » Sun Jul 15, 2012 1:52 am

Hallo,

ich habe kleine Probleme das folgende USER RPL Programm in die Syntax für den ND1 umzusetzen.
Code: Select all
\<< DEG 2. FIX
  IF DEPTH 1. \>=
  THEN 'Orb' STO
  END
  IF 'Orb' VTYPE 0. ==
  THEN
@ Die Voreinstellung für Lg kann hier geändert werden:
    IF 'Lg' VTYPE -1. ==
    THEN 11.57 'Lg' STO
    END
@ Die Voreinstellung für Br kann hier geändert werden:
    IF 'Br' VTYPE -1. ==
    THEN 48.13 'Br' STO
    END
    IF Orb Lg - ABS 90. <
    THEN Orb Lg - 'Dif' STO Dif TAN NEG Br SIN
      IF DUP 0. \=/
      THEN / ATAN
      ELSE DROP DROP
        IF Dif 0. <
        THEN -90.
        ELSE 90.
        END
      END 'Azi' STO Br COS Dif COS * DUP ACOS 'b' STO
      IF DUP 1. \=/
      THEN DUP .151095846455 - SWAP ACOS SIN / ATAN 'Ele' STO
      ELSE DROP 90. 'Ele' STO
      END "Satellitenpeilung
Ort:     Lg = " Lg \->STR + "\^o
         Br = " + Br \->STR + "\^o
Orbit:   Orb= " + Orb \->STR + "\^o
Peilung: Azi= " + Azi \->STR + "\^o
         Ele= " + Ele \->STR + "\^o" +
      IF Ele 0. <
      THEN "
       nicht sichtbar!" +
      END CLLCD 1. DISP 0. WAIT DROP
      \<< { Ele Azi b Dif Orb LOE } PURGE
      \>> 'LOE' STO { LOE Lg Br Orb Azi Ele b Dif } ORDER
    ELSE 4000. .1 BEEP "Azimut > \17790\^o!
 Berechnung
 wird nicht
 durchgef\252hrt!" MSGBOX
    END
  ELSE 4000. .1 BEEP "Satelliten-Peilung:

 Angabe f\252r
 Orbitposition fehlt!

 Ost=(+)     West=(-)" CLLCD 1. DISP 0. WAIT DROP
  END
\>>

Welche Befehle werden in ND1 nicht unterstützt?
Muss man alles in RPL+ umwandeln?
Gruß Klaus
klaus
 
Posts: 41
Joined: Sat Jun 23, 2012 1:42 pm
Location: Germany

Re: Programm

Postby oliver » Mon Jul 16, 2012 10:31 am

Hallo Klaus,

RPL+ ist, was die Sprache anbelangt, voll rückwärts-kompatibel mit RPL. D.h., keine Übersetzung ist erforderlich.

Eine Schwäche von ND1 ist das die Kommandos für interaktive Programme fast alle fehlen (nur INPUT and MSGBOX sind da).
Da sind einige in Deinem Programm zum Ende hin: CLLCD, DISP, WAIT, BEEP.
Ausser denen, ist ORDER nicht unterstützt und PURGE braucht einzelne Namen (nicht eine Liste von Namen). Der Rest sollte schon funktionieren, wobei \^o mir nicht bekannt ist und nicht den erwünschten Effekt erzielen wird. (Aber ohnehin zum nicht unterstützten DISP gehört.)

Anmerkung: Wenn Du das Programm mit Werkzeuge.getCode hochlädst, werden Die die diversen \<< \=/ etc. Transcodes automatisch umgewandelt. Ansonsten, kannst Du die Umwandlung mit Werkzeuge.trans "manuell" machen.

Das kommende "mach-Deine-Eigene-Benutzeröberfläche" Update wird interaktive Programme mit ein bisschen iPhone Komfort ermöglichen.

Ich hoffe, dass Du Dein Programm, auf die Ausgabe eines Strings geändert, auch noch nützlich sein kann.

Gerne probiere ich das aus, wenn Du mir Werte für die diversen Ordner-Variablen, und die erwarteten Ergebnisse, geben kannst.

Oliver
oliver
Site Admin
 
Posts: 433
Joined: Sat May 01, 2010 2:11 pm

Re: Programm

Postby klaus » Tue Jul 17, 2012 3:47 am

Hallo Oliver,

dabei handelt es sich um ein kleines Programm um die Azimut (Süd nach Ost Richtung) , 0° ist Richtung Süden, und Elevation (Höhe) eines Satelliten für den jeweiligen Standpunkt auszugeben, wenn die Position des Satelliten im Orbit bekannt ist. z.B. ASTRA = 19.2°.

Alle Angaben sind in Dezimalgrad.
Lg (Länge), Br (Breite), Or (Orbit), Az (Azimut), El (Elevation) sind globale Variablen.
Attachments
Sat.png
Sat.png (43.67 KiB) Viewed 4937 times
Gruß Klaus
klaus
 
Posts: 41
Joined: Sat Jun 23, 2012 1:42 pm
Location: Germany

Re: Programm

Postby klaus » Tue Jul 24, 2012 5:19 am

Hallo,

ich habe es geschafft den Code so zu ändern, dass die Ergebnisse in Variablen gespeichert werden.
Code: Select all
\<<DEG 2 FIX
'Orb' STO
'Lg' STO
'Br' STO
Orb Lg - 'Dif' STO
Dif tan NEG Br sin / atan 'Azi' STO
Br cos Dif cos * acos 'b' STO
b cos 0.151095846455 -
b sin / atan 'Ele' STO
\>>

Wenn ich die Ergebnisse in einer MSGBOX anzeigen lassen möchte.
Code: Select all
Azi -> STR
Ele -> STR
+ + MSGBOX

funktioniert dies leider nicht. Wie kann ich dies in die richtige Form bringen?
Gruß Klaus
klaus
 
Posts: 41
Joined: Sat Jun 23, 2012 1:42 pm
Location: Germany

Re: Programm

Postby oliver » Tue Jul 24, 2012 6:26 am

Hallo Klaus,

Entschuldige, dass ich auf Deine vorletzte Post noch nicht geantwortet habe. Arbeite am CAS und muss das erst fertigstellen.

Kann ich den Rest Deines Codes sehen?

Dies hier
Code: Select all
Azi -> STR
Ele -> STR
+ + MSGBOX

verbindet mehr Strings, als auf dem Stack zu liegen scheinen. (Zwei "+" benötigen 3 Strings; Zahlen mussen übrigens nicht erst in Strings verwandelt werden, wenn sie mit einem String verbunden werden.) MSGBOX ist ansonsten recht trivial, da es einfach einen String nimmt.

Füge doch HALT irgendwo in Dein Programm ein und schaue Dir an, was auf dem Stack passiert. Das hilft gut Probleme aufzudecken.

Oliver
oliver
Site Admin
 
Posts: 433
Joined: Sat May 01, 2010 2:11 pm

Re: Programm

Postby klaus » Fri Jul 27, 2012 12:02 pm

Hab eine Lösung gefunden:
Code: Select all
\<<DEG 2 FIX
'Orb' STO
'Lg' STO
'Br' STO
Orb Lg - 'Dif' STO
Dif tan NEG Br sin / atan 'Azi' STO
Br cos Dif cos * acos 'b' STO
b cos 0.151095846455 -
b sin / atan 'Ele' STO
"Azimut: " Azi + "Grad" +
"
"
"Elevation: " + Ele + "Grad" +
MSGBOX
\>>

Nur die Ergebnisse werden nicht mit zwei Kommastellen angezeigt.
Gruß Klaus
klaus
 
Posts: 41
Joined: Sat Jun 23, 2012 1:42 pm
Location: Germany


Return to Auf Deutsch

Who is online

Users browsing this forum: No registered users and 1 guest

cron