retour
programmes en BASIC
 

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!