Programmation en langage basic.
Voici, prêts à l'utilisation les programmes de conversion écrits sur une calculatrice Casio FX880P en langage Basic
conversion QRAloc vers cordonnées géographiques, pour pouvoir traduire vos prises de notes en Latitude-Longitude :
Programme simple (indépendant)
en violet les ajouts pour passer de 200 à 20m de précision, en bleu, ce que je n'ai pas encore testé (je suis en train de le réécrire).
3 SET N
100
A=1:B=2:C=3:D=4:E=5:F=6:G=7:H=8:I=9:J=10:K=11:L=12:M=13:N=14:O=15:P=16:Q=17:R=18:S=19:T=20:U=21:V=22:W=23:X=24
120 INPUT W$
125 PRINT W$;" ";
130 a=VALF(MID$(W$,1,1))
140 b=VALF(MID$(W$,2,1))
150 c=VALF(MID$(W$,3,1))
160 d=VALF(MID$(W$,4,1))
170 e=VALF(MID$(W$,5,1))
180 f=VALF(MID$(W$,6,1))
185 g=VALF(MID$(W$,7,1))
200 h=VALF(MID$(W$,8,1))
202 i=
VALF (MID$(W$,9,1)
204 j=
VALF (MID$(W$,10,1)
210 LO=-180+360/18*(a-1)+360/18/10*c+360/18/10/24*(e-1)+360*(g-1)/18/10/24/24
220 LA=-090+180/18*(b-1)+180/18/10*d+180/18/10/24*(f-1)+180*(h-1)/18/10/24/24
230 PRINT "LA";DMS$(LA);"LO";DMS$(LO)
240 GOTO 100
conversion cordonnées géographique vers QRAloc,Programme
simple (indépendant)
2 SET N
100 A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
110 INPUT "la",la,"lo",lo
115 la=la+5E-9:lo=lo+5E-9
120 a=INT(lo+180)/360/18
130 b=INT(la+090)/180/18
140 c=INT(10*FRAC((lo+180)/360*18))
150 d=INT(10*FRAC((la+090)/180*18))
160 e=INT(24*FRAC((lo+180)/360*18*10))
170 f=INT(24*FRAC((la+090)/180*18*10))
180 g=INT(24*FRAC((lo+180)/360*18*10*24))
190 h=INT(24*FRAC((la+090)/180*18*10*24))
200 PRINT "la ";DMS$(la);" lo ";DMS$(lo),
210 PRINT MID(A$,a+1,1);" ";MID(A$,b+1,1);" ";c;d;" ";MID(A$,e+1,1);"
";MID(A$,f+1,1);" ";MID(A$,g+1,1);" ";MID(A$,h+1,1);" "
220 la=la-5E-9:lo=lo-5E-9
programmes de commande: cet élément se sert des convertisseurs puis du calcul de distance directement à partir de deux codes QRA-loc.
il lui faut alors executer des programmes externes.
1 PRINT "angle-dist MODE QRA,0, OU CLASSIQUE,1,conversion
qra-lalo,2,lalo-qra,3";
2 INPUT co
3 IF co=0 GOTO 40:IF co=1 GOTO 4: IF co=2
GOTO 15: IF co=3 GOTO30
4 PRINT
"rentrer cordonnées d'ici LA et LO, puis de la bas la et lo";
5 INPUT
"LA",LA,"LO",LO,"la",la,"lo",lo,
6 GOSUB#4
8 GOTO
60
10 PRINT"
pour connaître lat et long rentrer un code QRAloc ";
15 GOSUB#6
25 GOTO
10
30 GOSUB
#2
32 GOTO
60
40 GOSUB#5
exécute
le programme5
50 GOSUB#6
exécute
le programme6 (une fois que l'instruction RETURN
a été rencontré dans le programme 5).
60 GOSUB#4
exécute
le programme4
70 GOTO
40
80 END
conversion de cordonnées classique vers un code
QRAloc
pour rentrer 45°45'53" taper _DEG(45,45,53)_, pour
rentrer 41° et 123 centièmes de degrés taper _41.123_.
Ne pas confondre la virgule avec le point qui sépare nombre entier
des décimales!!!.
1 PRINT "MODE QRA,0, OU CLASSIQUE,1";
2 INPUT co
3 IF co=0 GOTO 10:IF c0=1 GOTO 4
4 PRINT "rentrer cordonnées
d'ici LA et LO, puis de la bas la et lo";
5 INPUT "LA",LA,"LO",LO,"la",la,"lo",lo,
6 GOSUB#4
8 GOTO 20
10 PRINT" pour connaître
lat et long rentrer un code QRAloc ";
20 GOSUB#6
30 GOTO 10
Pour calculer les distances sans utiliser le code QRA,
ajoutet
Programme4 (à mettre dans la zone de mémoire 4)
107 SET F2:b=90-LA:a=90-la:c=lo-LO
111 c=ACS(( COSa*COSb+SINa*SINb*COSC:DIST
=c*1.854*60:M=c*60
250 IF LO=lo; IF LA=la; PRINT
"pile dessus";: GOTO 345
255 GOTO 270
260 IF LO=lo;di=LA-la:DIST=di*1.854*60
270 IF b=180;c=180-a:A=lo
280 IF a=0;c=b:A=0
285 IF a=180;c=180-b:A=180:GOTO
340
290 IF b=;c=a:A=180-lo
295 IF A<0;A=360+A
296 IF c=180;GOTO 340
297 IF b=0;GOTO 340
298 IF b=180;GOTO 340
299 IF a=0;GOTO 340
300 z= ((COSa-COSb*COSc)/(SINb*SINc)):IF
Z>1;z=1
310 A=180-ACS-(z*SGNc)
320 IFC>180;A=180+A
330 IF c=180; PRINT "antipodes";"
DIST=";DIST;"Km":GOTO 105
341 PRINT LA;LO;"vers";la;la;"
distance";DIST;"Km";c*60;"NM";" angle=";A;
345 L$=INPUT$(1):IF L$="L";PRINT
" long-pass";1.854*60*(360-c);"Km";60*(360-c);"NM"
346 IF L$="D";PRINT "decalage
horaire las bas";DMS$((lo)/360*24)
une pression sur D appelle le calcul du décallage horaire par rapport à l'heure TU de "las bas", une pression sur L indique le chemin le plus long en passant d'abord par les antipodes (utile pour contacter un radio amateur Américain depuis la france avec l'antenne vers le sud-est!)
347 RETURN
Sous programme
5 convertisseur cordonnées
vers QRAloc
3 ON ERROR GOTO 123
10 SET N
20 PRINT
"reglage precision 4,6,8 OU 10";
30 INPUT
pr
40 PRINT "rentrer le QRA-loc...
";
50 INPUT W$
100 A=1:B=2:C=3:C=4:E=5:et
ainsi de suite jusqu'à z=26.
123 PRINT
"non valide: rentrer un code QRA à ";pr;" variables":goto 20
125 PRINT W$ " ";confirmation
130 a= VALF (MID$(W$,1,1)
133 b= VALF (MID$(W$,2,1)
136 c= VALF (MID$(W$,3,1)
139 d= VALF (MID$(W$,4,1)
140 if pr=4 goto 210
142 e= VALF (MID$(W$,5,1)
145 f= VALF (MID$(W$,6,1)
146 if pr=6 goto 210
148 g= VALF (MID$(W$,7,1)
151 h= VALF (MID$(W$,8,1)
152 if pr=8 goto 210
154 i=
VALF (MID$(W$,9,1)
157 j=
VALF (MID$(W$,10,1)
153 if
pr=6 goto 210 rem superflu
210 LO=-180+360/18*(a-1)+360/180/10*c+360/18/10/24*(e-1)+360*(g-1)/18/10/24/24+360/18/10/24/24/10*i
220 LA= 180/18*(b-1)+180/180/10*d+180/18/10/24*(f-1)+180*(h-1)/18/10/24/24
-90 +180/18/10/24/24*j
230 PRINT "LA";DMS$(LA);" LO";DMS$(LO)
250 RETURN retourne
au programme de commande courant
Programme 6 : identique
au 5 mais simplement remplacer LA par la et
LO par lo
Pour calculer le QRA
loc à partir de cordonnées classiques
(programme2)
2 SETN
100 A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
110 INPUT "la",la,"lo",lo
115 la=la+5E-9:lo=lo+5E-9
120 a=INT(lo+180)/360*18
130 b=INT(la+90)/180*18
140 c=INT(10*FRAC((lo=180)/18))
150 d=INT(10*FRAC((la+90)/180*18))
160 e=INT(24*FRAC((lo+180)/360*18*10))
170 f=INT(24*FRAC((la+90)/180*18*10))
180 g=INT(24*FRAC((lo+180)/
360*18*10*24))
190 h=INT(24*FRAC((la+90)/ 180*18*10*24))
180 i=INT(10*FRAC((lo+180)/
360*18*10*24*24))
190 j=INT(10*FRAC((la+90)/
180*18*10*24*24))
200 PRINT "la" ";DMS$(la);"
lo ";DMS$(lo),
210 PRINT MID(A$,a+1,1);" ";MID(A$,b=1,1);"
";c;d;" ";MID(A$,e+1,1);" "; MID(A$,f+1,1);" "; MID(A$,g+1,1);" "; MID(A$,h+1,1)"
"; MID(A$,g+1,1);" "; MID(A$,h+1,1);" ";i;j;" ":la=la-5E-9:lo
=lo-5E-9
Si un programmeur pouvait
traduire ce programme en langage c++ cela m'aiderait beaucoup!