Le périphérique souris (programmation)

49
1 MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE DEPARTEMENT DE GENIE INFORMATIQUE 3EME ANNÉE INFORMATIQUE CYCLE LONG MODULE DE L ARCHITECTURE DES ORDINATEURS Réalisé par : BENYAMMI BACHIR Encadré par : MR.LAGRAA REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE 2005 / 2006

Transcript of Le périphérique souris (programmation)

1

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE

DEPARTEMENT DE GENIE INFORMATIQUE

3EME ANNÉE INFORMATIQUE CYCLE LONG

MODULE DE L’ARCHITECTURE DES ORDINATEURS

Réalisé par :

BENYAMMI BACHIR

Encadré par :

MR.LAGRAA

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

2005 / 2006

2

Plan de travail

Introduction

Les caractéristiques d'une souris

Fonctionnement de souris

Technologie des souris

Programmation de la souris

Conclusion

3

Pourquoi la Souris ?

L’importance de l’informatique amène des

utilisateurs de plus en plus nombreux et de plus

en plus profanes à utiliser l’informatique.

Une vaste partie de population utilise les

ordinateurs sans avoir une connaissance sur

l’architecture des ordinateurs et sur sa

programmation.

La majorité de ces personnes détestent la

frappe des commandes système au clavier.

4

Historique

La souris a été inventée en 1963 par

Douglas Engelbart du Stanford Research Center.

Elle a été améliorée par Jean-Daniel Nicoud

à l'EPFL dès 1979.

En 1984. La souris est rendue populaire

avec le Macintosh (MacOS).

Les premières souris étaient en fait de

simples trackballs inversées.

5

Les caractéristiques d'une souris

La souris doit son nom à

sa forme : une petite

boîte reliée par sa queue

à l'ordinateur.

Une souris se compose d’:

Une boîte,

Un ou plusieurs boutons,

Capteur directionnel (en

général une bille),

Une liaison avec l’ordinateur

(généralement un câble).

6

Le bouton gauche est le plus utilisé.

Le bouton droite commandant des fonctions

supplémentaire.

La molette est utilisée pour le défilement du texte à

l'écran, ou le zoom.

Boutons de la souris

7

La position horizontale du curseur (X).

La position verticale du curseur (Y).

L’état courant des bouton.

Fonctionnement de souris

La souris transmettre des informations de

positionnement (une séquence de trois octets

toutes les 100 ms) au contrôleur qui la gère:

8

Le chargement du pilote sous DOS se fait par la

commande : > MOUSE.

La désinstallation du pilote est réalisée par la

commande

: > MOUSE OFF

La version actuel du pilote support la plupart des

modes d’écran sur le marché (Hercules, CGA, EGA, VGA,

…).

La souris comme tout périphérique, nécessite un

pilote de commande pour s’exécutée.

Le pilote de la souris MOUSE.COM

9

Technologie des souris

Types de Souris:

Mécanique

Optomécanique

Optique

Types de liaison:

Liaison par câble

Liaison infrarouge

Liaison radio

Types de connexion:

connexion série

connexion PS/2

Connexion USB

Ports de la carte mère

10

Types de Souris

Souris Mécanique

Fonctionne à l'aide d'une boule.

L’inconvénient de se type est le

dépôt de poussières.

11

Souris Optomécanique

Types de Souris

1 : Boule.

2 : Rouleau.

3 : Cellule photoélectrique.

4 : Bouton du clic gauche.

5 : LED (Diode électroluminescente ).

12

L’avantage de ce type de souris, c'est qu'elle fonctionne sans boule. Alors pas des problèmes d'encrassement !

Souris Optique

Types de Souris

13

Le type de liaison le plus utilisé.

Distance < 1 m.

Liaison par câble

Types de Liaison

14

Ce type de liaison est

de plus en plus fréquent.

Distance ≈ 2 m.

Liaison par infrarouge

Types de Liaison

15

Cette liaison est proche

de celui de l'infrarouge.

Distance jusqu'à 10 m !

Liaison radio

Types de Liaison

16

Utilisation des ports série (COM1 ou COM2).

L’inconvénient est l’occupation de l’un des ports série.

Connexion Série

Types de connexion

17

La Souris se déplace plus régulièrement et avec plus de précision et libère l'un des ports série.

L'inconvénient est qu'elle nécessite son propre IRQ (l'IRQ12).

Connexion PS/2

Types de connexion

18

Branchement à chaud (pas obligé de redémarrer l’ordinateur).

Connexion USB

Types de connexion

19

Port PS/2 (2).

Port Série (DB9) (RS-232) (3).

Port USB (1).

Ports de la carte mère

Types de connexion

20

Programmation de la souris

Les diverses fonctions de l'interface de souris sont

appelées par l'intermédiaire de l'interruption 33h.

La version 8.0 du driver de souris reconnaît en tout

53 fonctions allant de 0000h à 00034h.

Plusieurs fonctions sont presque identiques et

quelque fonctions sont des combinaisons d’autres

fonctions. Quelque fonctions sont pas documentées.

La plupart des fonctions travaillent avec les

registres AX, BX, CX et DX, Les registres ES, SI et DI ne

sont pas utiles que dans l'adressage.

21

1. Driver de la souris.

1. Position du curseur.

2. Zones du curseur.

3. Visibilité du curseur.

4. Sensibilité de la souris.

5. État de la souris.

Classification des fonctions

22

1. Driver de la souris

Il existe 04 fonctions qui nous permettent de

contrôler le pilote de la souris

Réinitialisation du driver de souris. (Fct 00h)

Désactiver le driver de la souris. (Fct 1Fh)

Activer le driver de la souris. (Fct 20h)

Lire le type de souris. (Fct 24h)

Classification des fonctions

23

2. Position du curseur

Il existe 03 fonctions qui nous permettent de

connaître et de définir l’emplacement du curseur.

Lire la position de la souris et l'état des

boutons de la souris. (Fct 03h)

Déplacement du curseur de la souris. (Fct 04h)

Lire les distances de déplacement. (Fct 0Bh)

Classification des fonctions

24

3. Zones du curseur

03 fonctions existes pour définir les différentes zones

du curseur de la souris

Définir la zone de déplacement horizontale. (Fct 07h)

Définir la zone de déplacement verticale. (Fct 08h)

Définir la zone d'exclusion (Fct 10h)

Classification des fonctions

25

4. Visibilité du curseur

Contrôle la visibilité du curseur et modifié ça motif

Afficher le curseur de la souris sur l'écran. (Fct 01h)

Masquer le curseur de la souris. (Fct 02h)

Définit le curseur de la souris en mode graphique.

(Fct 09h)

Définit le curseur de la souris en mode de texte.

(Fct 0Ah)

Classification des fonctions

26

5. Sensibilité de la souris

Définir et lire la sensibilité de la souris

Définir la sensibilité de la souris. (Fct 1Ah)

Lire la sensibilité de la souris. (Fct 1Bh)

Classification des fonctions

27

6. État de la souris

Manipuler l’état de la souris

Lire la taille du buffer d'état de la souris (Fct 15h)

Sauvegarder état de la souris (Fct 16h)

Restaurer l'état de la souris (Fct 17h)

Classification des fonctions

28

Les librairie du TP7Librairie Nom du fichier

La librairie DOS

La librairie CRT

La librairie graphique GRAPH.TPU

Le driver de la carte graphique EGAVGA.BGI

Unité Nom du fichier

L’interface souris USOURIS.PAS

L’unité d’affichage AFFICHE.PAS

L’unité d’initialisation INITIAL.PAS

Les motifs des curseurs graphiques CURSEURS.PAS

Le programme principal TEST.PAS

Le code source

Organisation des fichiers

29

Conclusion

En informatique, la souris est

devenue pour l’utilisateur synonyme de

facilité, d’agrément, de confort, bref

d’une convivialité que tout

programmeur souhaite légitimement

pouvoir mettre de son coté.

30

Programmation de la souris

A. Classification des fonctions

B. Organisation des fichiers

1. Driver de la souris

2. Position du curseur

3. Zones du curseur

4. Visibilité du curseur

5. Sensibilité de la souris

6. État de la souris

A. Classification des fonctions

1. Driver de la souris

Il existe 04 fonctions qui nous permettent de contrôler le

pilote de la souris

Réinitialisation du driver de souris

Désactiver le driver de la souris

Activer le driver de la souris

Lire le type de souris

Fonction 00h Réinitialisation du driver de souris (TesterDriver)

with Driver do

with reg do

begin

ax := 0;

intr ($33, reg);

Souris.NbrBtns := bl;

DrvExiste := (ax <> 0);

end ;

Fonction 1Fh Désactiver le driver de la souris(DesactiverDriver)

reg.ax := $1f;

intr($33, reg);

Fonction 20h Activer le driver de la souris (ActiverDriver)

reg.ax := $20;

intr($33, reg);

Fonction 24h Lire le type de souris (TesterDriver)

with Driver do

with reg do

begin

ax := $24;

intr($33, reg);

str(bl, VerL);

str(bh, VerH);

Version := VerH + '.' + VerL;

Irq := cl;

case ch of

1: TypeDrv :='Souris Bus';

2: TypeDrv :='Souris Série';

3: TypeDrv :='Souris InPort';

4: TypeDrv :='Souris PS/2';

5: TypeDrv :='Souris HP';

end;

end;

2. Position du curseur

Il existe 03 fonctions qui nous permettent de connaître et de

définir l’emplacement du curseur.

• Lire la position de la souris et l'état des boutons de la souris

• Déplacement du curseur de la souris

• Lire les distances de déplacement

with Souris do

with Curseur do

with reg do

begin

ax := $3;

intr($33, reg);

EtatBtn1 := bl and 1;

EtatBtn2 := bl and 2;

x := cx;

y := dx;

end;

Fonction 03h Lire la position de la souris et l'état des boutons de la

souris (LirePosCurseur)

with Curseur do

with reg do

begin

ax := $04;

cx := x;

dx := y;

end;

intr($33, reg);

Fonction 04h Déplacement du curseur de la souris (DefinirPosCurseur)

with reg do

with Curseur do

begin

ax := $0b;

intr($33, reg);

DistanceX := cx;

DistanceY := dx;

end;

Fonction 0Bh Lire les distances de déplacement (LireDistance)

3. Zones du curseur

03 fonctions existes pour définir les différentes zones du curseur de la

souris

• Définir la zone de déplacement horizontale

• Définir la zone de déplacement verticale

• Définir la zone d'exclusion

with ZoneDeplacement do

with reg do

begin

ax := $07;

cx := MinX;

dx := MaxX;

intr($33, reg);

end ;

Fonction 07h Définir la zone de déplacement horizontale

(DefinirZoneDeplacement)

with ZoneDeplacement do

with reg do

begin

ax := $08;

cx := MinX;

dx := MaxX;

intr($33, reg);

end ;

Fonction 07h Définir la zone de déplacement verticale

(DefinirZoneDeplacement)

Fonction 10h Définir la zone d'exclusion (DefinirZoneExclusion)

with ZoneExclusion do

with reg do

begin

ax := $10;

cx := MinX;

dx := MinY;

si := MaxX;

di := MaxY;

end;

intr($33, reg);

4. Visibilité du curseur

Contrôle la visibilité du curseur et modifié ça motif

• Afficher le curseur de la souris sur l'écran

• Masquer le curseur de la souris

• Définit le curseur de la souris en mode graphique

• Définit le curseur de la souris en mode de texte

reg. ax := 2;

intr($33, reg);

reg. ax := 1;

intr($33, reg);

Fonction 01h Afficher le curseur de la souris sur l'écran

(AfficherCurseur)

Fonction 02h Masquer le curseur de la souris (CacherCurseur)

with Curseur do

with reg do

begin

ax := $09;

bx := 0;

cx := 0;

es := seg(TypeCurseur);

dx := ofs(TypeCurseur);

end;

intr($33, reg);

Fonction 09h Définit le curseur de la souris en mode graphique

(DessinerCurseurGraph)

Fonction 0Ah Définit le curseur de la souris en mode de texte

(DessinerCurseurTexte)

with reg do

with Curseur do

begin

ax := $0a;

bx := TypeCurseur;

cx := Operand1;

dx := Operand2;

end;

intr($33, reg);

5. Sensibilité de la souris

Définir et lire la sensibilité de la souris

• Définir la sensibilité de la souris

• Lire la sensibilité de la souris

Fonction 1Ah Définir la sensibilité de la souris (DefinirSensibiliteSouris)

with Curseur do

with reg do

begin

ax := $1a;

bh := 0;

bl := Sensibilite;

ch := 0;

cl := Sensibilite;

dx := Seuil;

end;

intr($33, reg);

Fonction 1Bh Lire la sensibilité de la souris (LireSensibiliteSouris)

with Curseur do

with reg do

begin

ax := $1b;

intr($33, reg);

{Sensibilite := bx;}

Sensibilite := cx;

Seuil := dx;

end;

6. État de la souris

Manipuler l’état de la souris

• Lire la taille du buffer d'état de la souris

• Sauvegarder état de la souris

• Restaurer l'état de la souris

Fonction 15h Lire la taille du buffer d'état de la souris (LireTailleBuffer)

with reg do

begin

ax := $15;

intr($33, reg);

TailleBuffer := bx;

end;

Fonction 16h Sauvegarder état de la souris (SauverEtatSouris)

with reg do

begin

ax := $16;

bx := TailleBuffer;

es := seg(BufferEtatSouris);

dx := ofs(BufferEtatSouris);

end;

intr($33, reg);

Fonction 17h Restaurer l'état de la souris (RestaurerEtatSouris)

with reg do

begin

ax := $17;

bx := TailleBuffer;

es := seg(BufferEtatSouris);

dx := ofs(BufferEtatSouris);

end;

intr($33, reg);