Afin de lire la position de mon télescope LX50 avec mon ordinateur de poche HP200LX, j'ai développé un programme qui est à la suite (en extrait). Quand je saurais faire un système de téléchargement sur mon site, je mettrais les sources entiers.
In order to read the position of my LX50 telescope with my pocket computer HP200LX, I developped a software (see backward). When I will be able to make a remote files system on these pages, I'll put all the software.
unit comteles;
interface
const
Numcom : byte = 1;
procedure init_souris;
procedure close_souris;
procedure lit_souris(var xx,yy:integer);
implementation
uses crt, comlib;
const
BR : integer = 1200;
P : char = 'N';
WS : integer = 8;
SB : byte = 2;
BS : integer = 2000;
var e1,e2,e3,e4,e5,e6,e7,e8 : char; {propre … binaire}
f : integer; {propre … binaire}
{-------------------------------------------}
{---------------------------------------------------------------------------}
function binaire(valeur:byte):string;
begin
e1:= char (valeur div 128+48); f:= valeur mod 128;
e2:= char (f div 64+48); f:= f mod 64;
e3:= char (f div 32+48); f:= f mod 32;
e4:= char (f div 16+48); f:= f mod 16;
e5:= char (f div 8+48); f:= f mod 8;
e6:= char (f div 4+48); f:= f mod 4;
e7:= char (f div 2+48); f:= f mod 2;
e8:= char (f div 1+48);
binaire:=e1+e2+e3+e4+e5+e6+e7+e8;
end;
{---------------------------------------------------------------------------}
function expo(valeur,exposant:integer):integer;
var i,expos: integer;
begin
expos:=1;
for i:=1 to exposant do expos:=valeur*expos;
expo:=expos;
if exposant=0 then expo:=1;
end;
{---------------------------------------------------------------------------}
function entier(val_bin:string):byte;
var i,a,erreur,en : integer;
begin
en:=0;
for i:=0 to 7 do begin
val(copy(val_bin,8-i,1),a,erreur);
en:= en + a*expo(2,i); {appel … la fct expo()}
end;
entier:=en;
end;
{---------------------------------------------------------------------------}
{------------------------------------------------------------------------------------}
procedure lit_souris(var xx,yy:integer);
var car : char;
i : byte;
s : string;
x,y : integer;
begin
{xx:=0; yy:=0; … reporter dans le prg}
{ repeat {lecture....}
repeat until cominready(numcom) or keypressed;
car:=cominchar(numcom); {1er caractŠre}
if car<>#0 then
begin
s:=binaire(ord(car));
if e3='1' then
begin
{ write('L ');}
xx:=0;
end;
if e4='1' then
begin
{ write('R ');}
yy:=0;
end;
{ if (e3='0') and (e4='0') then write('_ ');}
y:=entier(e5+e6+'000000');
x:=entier(e7+e8+'000000');
end;
repeat until cominready(numcom) or keypressed;
car:=cominchar(numcom); {2‚me caractŠre: a cond qu il y en ait un !}
if car<>#0 then
begin
if x=0 then
x:=x+ord(car)-128 {positif}
else
x:=x+ord(car)-256-128; {n‚gatif}
{ write('x:',x,' ');}
end;
repeat until cominready(numcom) or keypressed;
car:=cominchar(numcom); {3‚me caractŠre}
if car<>#0 then
begin
if y=0 then
y:=y+ord(car)-128 {positif}
else
y:=y+ord(car)-256-128; {n‚gatif}
{ write('y:',y,' ');}
end;
xx:=xx+x;
yy:=yy+y;
{ writeln(xx,' ',yy);}
{ until keypressed;}
{ writeln;
write('>');}
end;
{------------------------------------------------------------------------------------}
procedure init_souris;
begin
opencom(Numcom,BR,P,WS,SB,BS);
clrbuffcom(numcom);
end;
{-----------------------------------------}
procedure close_souris;
begin
closecom(numcom);
end;
{-----------------------}
end.
Pour l'instant, l'unité de communication série RS232 (comlib.pas) n'est accessible que par e-mail en .tpu