Un driver souris en clair - A mouse driver

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

 

Retour accueil - Home page