Vous êtes sur la page 1sur 50

Etudiant

Tuteur

Bilal BENLARBI

Ccile CAPDESSUS

Matre de stage
Eric HERVE

Rapport de Stage
BagXpress

Bilal BENLARBI

Rapport de stage BagXpress

Page 1

Sommaire
Remerciements

Table des illustrations

Glossaire

I. Introduction

II. Prsentation de lentreprise

II.1 Historique

II.2 Situation gographique

II.3 Domaines d'activits

10

II.3.1 Aroportuaire

10

II.3.2 Logistique

10

II.4 Organisation du personnel


II.4.1 Situation dans le service
III. Analyse

12
12
14

III.1 Prsentation BagXpress

14

III.1.1 Mode opratoire

15

III.2 Dfinition de lexistant

17

III.2.1 Bornes de cration de cartes dembarquement

17

III.2.2 BagXpress

17

III.3 Problmatique

18

III.3.1 Utilit des siomulateurs

18

IV. Partie technique

19

IV.1 Ralisation

19

IV.1.1 Procdure qualit

19

IV.1.2 Rtro-ingnierie

19

IV.1.3 Rigueur dans l'criture de code

19

IV.2 Conception du simulateur de scanner de carte d'embarquement

20

IV.3 Conception du simulateur d'imprimante de reu bagage

21

IV.4 Test et validation

22

V. Conclusion

23

V.1 Conclusion technique

23

V.2 Conclusion gnrale

24

Table des annexes

Bilal BENLARBI

25

Rapport de stage BagXpress

Page 2

Remerciements
Je tiens remercier Eric HERVE, mon matre de stage, pour la confiance quil ma
accord en mintgrant son quipe. Je remercie aussi les membres du Bureau dEtude
Informatique pour leur accueil, leur aide et leur collaboration.
Il mest arriv de bnficier de laide de mon matre de stage, de laide de lapprenti
Rodolpho DOHOU et de laide dun autre stagiaire Damien DEVILLIERSE lorsque jai
rencontr des problmes dordre technique.
Plus gnralement, je suis reconnaissant envers la socit Alstef.
Par ailleurs, je remercie lIUT de Chartres pour la qualit des enseignements proposs
et la formation dispense.

Bilal BENLARBI

Rapport de stage BagXpress

Page 3

Table des illustrations


Figure 1 : Plan daccs au sige social de Boigny sur Bionne
Figure 2 : Carte reprsentant toutes les localits o Alstef est implante
Figure 3 : Transstockeur Alstef
Figure 4: Organigramme fonctionnel
Figure 5 : Bureau d'tude informatique
Figure 6 : Machines de dpose bagage automatise BagXpress l'aroport de Roissy
Charles De Gaulle
Figure 7 : Machine de dpose bagage automatise BagXpress
Figure 8 : Bornes de cration de cartes dembarquement
Figure 9 : Exemple de carte dembarquement
Figure 10 : Exemple de reu bagage
Figure 11 : Rpartition des tches dans le dveloppement de la machine BagXpress

Bilal BENLARBI

Rapport de stage BagXpress

Page 4

Glossaire
Automate : Ensemble des parties lectriques, mcaniques, automatismes qui forme la
machine BagXpress.
DCS (Departure Control System) : systme de gestion de vol qui soccupe de la gestion du
passager et de son bagage. Il communique notamment avec le module de rservation qui
vrifie que le passager est bien enregistr dans la base de donnes de laroport.
Dveloppeur : informaticien qui ralise des logiciels en crant des algorithmes et en les
mettant en uvre dans un langage de programmation.
Phase de validation : opration destine dmontrer, documents l'appui, qu'une
procdure, un procd ou une activit conduit effectivement aux rsultats escompts. Elle
comprend la qualification des systmes et des quipements.
Tests dintgration : tablissement des connexions entre le logiciel de BagXpress et le
DCS de laroport client.
[Elment] physique : par opposition au virtuel.

Bilal BENLARBI

Rapport de stage BagXpress

Page 5

I. Introduction
Dans le cadre de ma deuxime anne de Diplme Universitaire de Technologie (DUT)
Gnie Electrique et Informatique Industrielle (GEII), jai effectu un stage au sein de
lentreprise Alstef Automation SA qui conoit des systmes automatiss de manutention
et de stockage et des systmes de tri bagage.
Alstef est distributeur dun nouveau systme de dpose-bagages automatis pour les
aroports, appel BagXpress. De la mme manire que lon scanne aujourdhui ses
propres articles au supermarch, il est dsormais possible denregistrer soi-mme ses
bagages laroport. Il sagit donc dun stage dans la partie Aroportuaire de
lentreprise Alstef, au sein du Bureau dEtude Informatique (BEI). Lobjectif du stage
est de raliser dans le logiciel de BagXpress des simulateurs en Visual Basic.NET
(VB.NET) et CSharp (C#) laide de lenvironnement de dveloppement Microsoft
Visual Studio 2010.
Le stage, dune dure de 10 semaines, se droule du lundi 15 avril au vendredi 21 juin
2013.
Je commencerai par prsenter lentreprise Alstef Automation, avec tout dabord une
description gnrale, puis la description de mon environnement de travail au sein du
bureau dtude informatique. Ensuite, je traiterai le projet en lui-mme. Et enfin,
jeffectuerai un bilan personnel et professionnel de cette exprience.

Bilal BENLARBI

Rapport de stage BagXpress

Page 6

II. Prsentation de lentreprise


II.1 Historique

Bilal BENLARBI

Rapport de stage BagXpress

Page 7

II.2 Situation gographique


Le sige social de la socit a emmnag en 2002 dans de nouveaux locaux situs dans
la ville de Boigny sur Bionne (45), commune proche dOrlans.

Figure 1 : Plan daccs au sige social de Boigny sur Bionne


Alstef dispose aussi dtablissements Lyon, Bergerac, Lille, Nice, Charles de Gaulle
ainsi qu ltranger comme au Canada, en Turquie, au Brsil ou encore au Maroc.
Cette socit a donc une dimension internationale.

Bilal BENLARBI

Rapport de stage BagXpress

Page 8

Figure 2 : Carte reprsentant toutes les localits o Alstef est implante

Bilal BENLARBI

Rapport de stage BagXpress

Page 9

II.3 Les domaines dactivit


La socit conoit, ralise, met en service, rnove et effectue la maintenance de
systmes automatiss de manutention et de stockage de charges isoles dans deux
principaux domaines : laroportuaire et la logistique.

II.3.1 Aroportuaire
La socit Alstef a dvelopp lactivit de Manutention de bagages aussi bien en France
qu ltranger et propose des installations cls en main ainsi que des prestations de
services et de maintenance pour les aroports. Alstef a implant des systmes de
contrle 100% des bagages de soute (Aroports de Paris Orly, Ble-Mulhouse, Lyon St
Exupry, Montral, etc). Le progiciel de pilotage de la partie aroportuaire se nomme
BAGWARE .

II.3.2 Logistique

Figure 3 : Transstockeur Alstef

Bilal BENLARBI

Rapport de stage BagXpress

Page 10

Les quipes de maintenance garantissent le suivi des quipements pour rpondre aux
attentes futures des clients.
Le progiciel de pilotage, STOCKWARE , est un produit phare de la socit pour
lactivit stockage automatique de palettes .
Alstef propose ses clients diffrents produits sadaptant aux besoins de chacun :
Le stockage : il est effectu laide de transstockeurs simple ou double
profondeur.
La transitique : les palettes sont achemines grce des convoyeurs, des
navettes de distribution ou encore des chariots autoguids.
La

manutention

spciale :

elle

concerne

la

manutention

de

charges

encombrantes ou lourdes (2 50 tonnes)


Le stockage froid : pour des clients qui ncessitent un stockage de produits
surgels avec des transstockeurs adapts.
Le nouveau produit en cours AutoStore : systme de stockage en bacs.

Bilal BENLARBI

Rapport de stage BagXpress

Page 11

II.4 Organisation du personnel

Figure 4: Organigramme fonctionnel


Lorganigramme de la socit est un document relatif au systme qualit de
lentreprise,

et

reprsente

larchitecture

administrative.

Les

communications

horizontales entre chaque service sont la cl de la russite des projets de lentreprise.


Avec un effectif de plus de 180 personnes, la socit Alstef dispose en interne de
toutes les comptences pour raliser et mener bien lensemble dun projet, du
bureau dtude avant-projets jusqu la maintenance des installations.

Bilal BENLARBI

Rapport de stage BagXpress

Page 12

II.4.1 Situation dans le service

Figure 5 : Bureau d'tude informatique

Pendant toute la priode du stage, jai t prsent dans le service conception


informatique galement appel Bureau dEtude Informatique (BEI). Ce service est
compos de 13 personnes dont un apprenti (R. DOHOU) et un stagiaire (D.
DEVILLIERSE), et intervient plusieurs niveaux sur chaque projet de la socit. Tout
dabord, il soccupe du dveloppement de diffrents logiciels de pilotage (BAGWARE
pour grer les systmes de tri bagage, STOCKWARE pour grer les systmes
logistiques), ensuite de linstallation sur site lors dun nouveau projet et enfin, au
niveau de la maintenance en cas de contrle ou de dysfonctionnement du systme mis
en place.
Mon travail consiste dvelopper les simulateurs du scanner et de limprimante de la
machine BagXpress.

Bilal BENLARBI

Rapport de stage BagXpress

Page 13

III. Analyse
III.1 Prsentation BagXpress
De la mme manire que lon scanne aujourdhui ses propres articles au supermarch, il
est dsormais possible denregistrer soi-mme ses bagages laroport, laide de la
machine de dpose bagage automatise appele BagXpress.

Figure 6 : Machines de dpose bagage automatise BagXpress l'aroport de Roissy - Charles


De Gaulle

Figure 7 : Machine de dpose bagage automatise BagXpress

Bilal BENLARBI

Rapport de stage BagXpress

Page 14

III.1.1. Mode opratoire


Ds son entre laroport, le passager doit se rendre aux bornes de cration de cartes
dembarquement (en anglais : boarding pass). Il sagit de bornes automatises dans
lesquelles il faut saisir le numro de rservation pour obtenir la carte dembarquement
associe et les autocollants attacher au bagage.

Figure 8 : Bornes de cration de cartes dembarquement

Figure 9 : Exemple de carte dembarquement

Une fois ltape de cration de carte dembarquement effectue, le passager peut se


rendre la machine BagXpress afin de dposer son bagage sans avoir besoin de passer
par une htesse. La communication entre la machine et le passager se fait par
lintermdiaire dun cran tactile. Le passager se prsente donc devant la machine, il

Bilal BENLARBI

Rapport de stage BagXpress

Page 15

doit slectionner la langue souhaite, puis sidentifier en passant le code-barres de sa


carte dembarquement devant le scanner qui clignote proche de lcran. Ensuite, il
dpose son bagage muni de lautocollant dans la machine. Celle-ci vrifie que le
bagage appartient bien au passager, effectue la pese et envoie le bagage sur un
convoyeur qui soccupe de son acheminement. Un reu est alors gnr et le passager
na plus qu patienter avant de prendre son vol.

Figure 10 : Exemple de reu bagage

Bilal BENLARBI

Rapport de stage BagXpress

Page 16

III.2. Dfinition de lexistant


III.2.1. Bornes de cration de cartes dembarquement
Les bornes ont t dveloppes par la socit Aroport de Paris.
III.2.2. BagXpress
La machine BagXpress a t dveloppe, en partenariat, par Alstef et Aroport de Paris :
concept gnral
design
fabrication
partie automatisme
partie lectrique
partie mcanique
tests
ventes
logiciel
simulateur dautomate

Aroport de Paris
Alstef (avec des spcialistes en ergonomie de chez Aroport de Paris)
Alstef (usinage : sous-traitance)
Alstef
Alstef
Alstef
Alstef & Aroport de Paris
Alstef
Aroport de Paris
Aroport de Paris

Figure 21 : Rpartition des tches dans le dveloppement de la machine BagXpress


Le logiciel de la machine de dpose bagage automatique a t ralis par la socit
Aroport

de

Paris.

Il

est

compos

de

deux

parties :

- partie automatisme : fonctionnement gnral de la machine (interactions entre


les

parties

lectriques,

automatismes,

informatique,

- partie communication avec le DCS (cf glossaire).

Bilal BENLARBI

Rapport de stage BagXpress

Page 17

III.3 Problmatique
A mon arrive chez Alstef, la partie logicielle fait partie intgrante de la machine
BagXpress.
Lobjectif de mon stage est de rendre la partie logicielle indpendante de la partie
matrielle, en ajoutant au simulateur dautomates le simulateur du scanner de cartes
dembarquement et le simulateur de limprimante du reu bagage.

III.3.1 Utilit des simulateurs


Les simulateurs permettent au dveloppeur dtre indpendant du matriel. Ainsi, il est en
mesure deffectuer la phase de validation (cf glossaire) de la machine depuis son
ordinateur,

sans

disposer

de

scanner,

dimprimante

et

dautomates.

Cela permet lentreprise de ne pas dpenser dargent dans un scanner et une imprimante
qui valent environ 1000 chacun, et qui deviennent obsoltes trs rapidement (au bout de
six mois environ). Le dveloppeur (cf glossaire) devient alors insensible aux pannes
matrielles et il peut se concentrer sur sa mission principale sans perdre de temps
inutilement. Par exemple, lorsquune pice est dfectueuse, sans simulateur, le
dveloppeur na dautre choix que dattendre que la pice de rechange arrive pour
continuer son travail.
De plus, les dveloppeurs des clients peuvent effectuer des tests dintgration (cf
glossaire) avant de recevoir la machine. De cette manire, la machine est fonctionnelle
ds son arrive sur site : la mise en service de la machine est donc acclre.
Tout cela contribue apporter de la souplesse au systme.
Par ailleurs, les simulateurs facilitent la prsentation de la machine de dpose bagage
automatise aux clients. En effet, cela vite davoir dplacer la machine BagXpress qui
est lourde, volumineuse et fragile. Et le traitement, totalement informatique, tant
indpendant de la mcanique, est trs rapide et montre immdiatement un rsultat.

Bilal BENLARBI

Rapport de stage BagXpress

Page 18

IV. Partie Technique


IV.1 Ralisation
IV.1.1 Procdure qualit
Pour chaque nouvelle installation sur mon poste (logiciel, module, plug-in), jai du
respecter des normes de qualit propres ALSTEF et rdiger des procdures et instructions
pour la socit. Par ailleurs, jai ralis la documentation de tous les programmes que jai
conus. Cette documentation sert comprendre le code que jai produit.

IV.1.2 Rtro-ingnierie
La Rtro-ingnierie (en anglais : reverse engineering ) est lactivit qui consiste
tudier un objet pour en dterminer le fonctionnement interne ou sa mthode de
fabrication.
Je suis pass par cette activit lorsque jai du intgrer le programme de cration de carte
dembarquement virutelle au logiciel de la machine BagXpress.
A cause du ma volont de tout de suite crire des lignes de code, jai t confront des
problmes de comprhension. Cela ma fait perdre du temps et jai d passer par ltape
danalyse pour mieux comprendre le code fourni et mieux men servir.

IV.1.3 Rigueur dans lcriture de code


Pour quun programme soit dpannable, volutif et lisible, il faut qu'il soit crit
rigoureusement, en respectant des normes. Il ne sagit pas de produire un code
rapidement, qui au final ne serait ni dpannable, ni volutif ni lisible. Il convient de
prendre le temps de lcrire correctement. Le temps pass sappliquer est finalement du
temps gagn par la suite, lorsquil sagit de dpanner le programme, de le faire voluer ou
de le dcrypter.

Bilal BENLARBI

Rapport de stage BagXpress

Page 19

IV.2 Conception du simulateur de scanner de cartes dembarquement


Le simulateur de scanner de cartes dembarquement doit permettre de simuler le
comportement du scanner. Ce dernier permet de lire les informations contenues dans le
code-barres de la carte dembarquement.
Comme on ne dispose pas de scanner physique (cf glossaire), on ne dispose pas non plus de
carte dembarquement physique. Il faut donc la crer virtuellement.
Il sagit donc, dans un premier temps, de savoir do provient le code-barres et partir de
quelles informations il t ralis. Ensuite, il faut le crer. Et enfin, il faut transmettre les
informations contenues dans le code-barres virtuel cr, au programme de la machine
BagXpress.
Pour ce faire, je dispose du programme de cration de cartes dembarquement codebarres cr par un employ dAlstef et du programme de la machine BagXpress dvelopp
par un employ dAroport de Paris.
Le programme de cration de cartes dembarquement a t crit dans un langage
incompatible avec celui du logiciel de la machine. Il faut donc le traduire pour pouvoir
lintgrer et lutiliser dans le contexte dsir.
Cest la raison pour laquelle jai transform le programme initial cod en Visual Basic 6, en
Visual Basic DotNET, qui est un langage compatible avec le logiciel de la machine.
La documentation concernant le simulateur de scanner carte dembarquement est
disponible en annexe, la page 41.

Bilal BENLARBI

Rapport de stage BagXpress

Page 20

IV.3 Conception du simulateur dimprimante de reus bagage


Le simulateur dimprimante de reus doit permettre dafficher un reu virtuel sur
lordinateur. Le reu sert avertir lutilisateur du bon droulement du processus de
dpose de bagage.
Pour le raliser, je mappuie sur le code cration de reu rel existant et au lieu de sortir
le rsultat sur papier, il faut lafficher sur lcran de lordinateur.
La documentation concernant le simulateur dimprimante de reus bagage est disponible
en annexe, la page 47.

Bilal BENLARBI

Rapport de stage BagXpress

Page 21

IV.4 Test et validation


La phase de test et validation du programme de cration de carte dembarquement
virtuelle ma permis de dtecter une erreur dans mon programme. En effet, lors de la
cration du code-barres, je navais pas saisi une subtilit qui a toute son importance : une
variable devait tre de taille fixe au lieu dtre variable.
Pour plus de dtail sur cette remarque, se reporter la page de lannexe 42.

Bilal BENLARBI

Rapport de stage BagXpress

Page 22

V. Conclusion
V.1 Conclusion technique
Au terme de ce stage, jai eu la satisfaction davoir ralis de simulateurs de matriel sur
un projet denvergure industrielle importante.
Ce stage ma permis de dcouvrir et dutiliser un logiciel de programmation : Visual
Studio.
Les simulateurs raliss ont t intgrs au programme de la machine de dpose bagage
automatise.
Par ailleurs, le travail en bureau dtude ma apport une certaine rigueur et de la
mthode.
En outre, jai d travailler en autonomie et apprendre de nouvelles choses par moi-mme.
Pour cela, jai utilis les notions acquises au cours de ma formation que jai toffes grce

Internet

qui

est

un

outil

au

trs

puissant.

moteur

Jai

essentiellement

de

eu

recourt :

recherche

Google,

- la librairie et au forum MSDN (Microsoft Developer Network) qui est une


rfrence officielle pour tout dveloppement logiciel sur Windows avec Visual Studio
notamment,
- au Siteduzero et Developpez.com qui regroupent des cours dinformatique et
des

forums,
- lencyclopdie en ligne Wikipdia.org.

Pendant

mon

stage,

jai

amen

utiliser

langlais

tous

les

jours.

Jai utilis cette langue pour les recherches sur Internet. Cest la langue internationale :
les dveloppeurs du monde entier communiquent en anglais. Ainsi, les ressources
disponibles en anglais sont largement plus nombreuses que les ressources en franais.
Les langages de programmation tant crits en anglais, jai aussi utilis langlais pour
coder.
Enfin, jai eu loccasion de pratiquer mon anglais loral, lors de djeuners avec un client
turc en visite chez Alstef.

Bilal BENLARBI

Rapport de stage BagXpress

Page 23

V.2 Conclusion gnrale


Jai effectu mon stage de deuxime anne de DUT Gnie Electrique et Informatique
Industrielle (GEII) au sein de lentreprise Alstef. Lors de ce stage de 10 semaines, jai pu
mettre en pratique les connaissances et les mthodes acquises durant ma formation lIUT
de Chartres.
Jai galement appris respecter des procdures mises en place par lentreprise pour
garantir un travail de qualit dans un contexte professionnel.
Jai russi mener bien les missions qui mont t confies, dans les temps impartis et
mme plusieurs fois avant la date butoire, ce qui ma permis de perfectionner ma
production.
Travailler sur un projet professionnel concret ma beaucoup motiv. Cela a donn du sens
mes tudes, et je suis fier que mon travail soit utile lentreprise.
Ce stage en entreprise a t loccasion pour moi dentrer en contact avec des
professionnels. Jy ai entrevu la vie en entreprise avec des notions telles que : les
runions, la hirarchie, les diffrentes fonctions et services, le syndicalisme, le
management, le planning, les astreintes mais aussi les moments plus informels de pause,
djeuner et change entre collgues.
Ce stage ma permis de dcouvrir le travail en bureau dtudes et la notion de recherche
et dveloppement, qui tait pour moi, un concept assez flou.

Bilal BENLARBI

Rapport de stage BagXpress

Page 24

Table des annexes

Annexe 1 : Boarding Pass Generator (Gnrateur de carte dembarquement)

26

Annexe 2 : Simulateur de scanner de carte dembarquement

41

Annexe 3 : Simulateur dimprimante de reu bagage

47

Bilal BENLARBI

Rapport de stage BagXpress

Page 25

1 . AN N E X E 1 : BO AR DI N G PAS S G E N E R ATO R
Lobjectif de ce programme est de gnrer une carte dembarquement (boarding pass,
en anglais), selon les informations saisies par lutilisateur dans une interface homme
machine (IHM).
Pourquoi gnrer un boarding pass ?
Le boarding pass gnrer doit contenir un code-barres (de type PDF417) contenant
toutes les informations du passager et son bagage qui doivent tre transmises la
machine BagXpress. Ainsi, pour sidentifier, le passager na qu prsenter le codebarres du boarding pass au scanner de la machine BagXpress. Tous les traitements qui
en dcoulent (identification du bagage ; envoie en soute) peuvent ensuite seffectuer

Comment gnrer un boarding pass ?


Comme nonc ci-dessus, le boarding pass contient des donnes propos du passager
et de son bagage. Pour gnrer un boarding pass, il faut donc renseigner le nom et le
prnom du passager, laroport de dpart et celui de destination. Sur le plan
technique, les nom et prnom constituent des textBoxs (littralement : des boites de
texte ; il sagit en fait de champs remplir au clavier). La dfinition de laroport de
dpart se fait par la slection de deux comboBoxs (listes droulantes) : la premire
consiste choisir le pays et la seconde permet le choix de laroport en fonction du
pays slectionn. Le choix de laroport darrive rside, quant lui, dans une
checkBox (littralement : bote de slection) : lutilisateur choisi une destination parmi
5 possibles (Tokyo, Paris, Londres, New York ou Montral).
Toutes ces donnes doivent donc tre renseignes depuis lIHM.
Afin dobtenir une structure logicielle intressante et lisible, on utilise plusieurs
classes (familles dobjets) dans plusieurs projets.

Bilal BENLARBI

Rapport de stage BagXpress

Page 26

Projet Common :
Classe Airport (Aroport) :
Cette classe permet de dfinir les informations concernant un aroport : Code IATA
(AirPortCode), Nom (AirPortName), Ville (City), Pays (Country, CountryCode, Latitude,
Longitude,
Constructeur

Indicatif
par

mondial

dfaut,

constructeur

(WorldAreaCode).
avec

paramtre

Accesseurs (Get & Set) : ils permette dobtenir (get) ou de dfinir (set) la valeur dune
donne membre qui est de type de prive (en anglais, private : c'est--dire que la
variable nest accessible ni en lecture, ni en criture). Si la donne membre tait
publique aucun accesseur naurait dintrt, puisque la variable serait accessible
depuis nimporte o dans le programme ; cela donnerait lieu des erreurs. En fait,
dun point de vu clart, interoprabilit, rutilisabilit, modularit, scurit, cela a
une relle plus-value. Cela est li des normes implicites qui sont nes de lexprience
des dveloppeurs, plus que de relles contraintes techniques lies l'objet).

Classe AirportList (Liste daroports) :


Cette classe permet de dfinir une liste daroports partir de la lecture dune base
de donnes (fichier .csv)
Classe Passenger (Passager) :
Cette

classe

permet

de

dfinir

les

informations

concernant

un

passager :

Prnom (FirstName), Nom (LastName), Rfrence de valise (Bagtag), Numro de vol


(Flight), Date de vol (Date), Aroport de dpart (FromAirport), Aroport de destination
(ToAirport).

Bilal BENLARBI

Rapport de stage BagXpress

Page 27

Projet Test :
Class Test.vb :
Cette classe permet de pr-remplir lobjet passager de la classe IHM.

Figure 3 : Test

Bilal BENLARBI

Rapport de stage BagXpress

Page 28

Projet BoardingPassGenerator_VB :

Classe IHM :
Gestion de la communication entre lutilisateur et la fentre de saisie (intermdiaire
entre lutilisateur et le code)
Classe UserControl_BoardingPass :
Instancie dans lIHM, cette classe permet de remplir dynamiquement (en direct) le
boarding pass, selon la saisie dans lIHM. Cest cet objet qui sera imprim.
La figure suivante illustre cela ; avec : encadr en vert : lIHM, encadr en rouge :
lIHM,

encadr

en

bleu :

le

UserControl_BoardingPass

contenu

dans

lIHM.

Utilit des UserControls :


Les Contrles Utilisateurs (UserControls) sont des contrles DotNET (des objets) que
lon dveloppe et que lon veut rutiliser dans dautres applications. On peut donc les
assimiler des contrles personnaliss.

Figure 4 : IHM et UserControl_BoardingPass

Bilal BENLARBI

Rapport de stage BagXpress

Page 29

Projet Pdf417 :

Classe UserControl_Pdf417 :
Instancie dans lIHM, cette classe permet dencoder dynamiquement (en direct) un
texte en code-barres de type Pdf417. Pour accder cette classe, il suffit de cocher la
case Dtail implmentation en bas gauche de la fentre IHM.

Figure 5 : IHM et UserControl_Pdf417

Bilal BENLARBI

Rapport de stage BagXpress

Page 30

Culture code-barres
Un code-barres, ou code barres, est la reprsentation d'une donne numrique ou
alphanumrique (chiffres et/ou lettres) sous forme d'un symbole constitu de barres
et d'espaces dont l'paisseur varie en fonction de la symbologie utilise et des donnes
ainsi codes. Il existe des milliers de codes-barres diffrents; ceux-ci sont destins
une lecture automatise par un capteur lectronique, le lecteur de code-barres.

Figure 6 : Exemple de code-barres

Le type de code-barres retenu pour la carte dembarquement (boarding pass) est le


PDF417 qui a une grande capacit de stockage. PDF signifie Portable Data File en
rfrence sa grande capacit de stockage (1850 caractres alphanumriques (chiffres
et/ou lettres) ou 2710 caractres numriques). En effet, le fait quil soit
bidimensionnel (en 2 dimensions : horizontale et verticale) permet denregistrer
davantage dinformations.

L'encodage se fait en deux tapes : tout d'abord, les donnes sont converties en "motscls" (Encodage de haut niveau) puis ceux-ci sont convertis en motifs de barres et
d'espaces (Encodage de bas niveau). De plus, un systme de correction des erreurs
plusieurs niveaux est inclus, il permet de reconstituer des donnes mal imprimes,
effaces, floues ou arraches.

Bilal BENLARBI

Rapport de stage BagXpress

Page 31

Structure :

Figure 7 : Exemple de code-barres type PDF417

La largeur de la barre la plus fine est appele le module.

Un module noir est symbolis par "1" et un module d'espace par "0".

Le code contient de 3 90 lignes.

Une ligne se compose de 1 30 colonnes de donns, sa largeur est de 90 583


modules avec les marges.

Nombre maximum de mots-cls par symbole : 928 dont 925 pour les donnes.
(1 pour le descripteur de longueur et 2 au minimum pour la correction
d'erreurs)

Si ncessaire un mcanisme nomm "Macro PDF-417" permet de rpartir


davantage de donnes sur plusieurs symboles PDF-417.

Il existe 929 mots-cls dont 900 pour les donnes, ils sont numrots de 0
928.

Le niveau de correction des erreurs va de 0 8. La correction comporte 2 motscls (au niveau 0) et 512 mots-cls (au niveau 8).

La ligne se compose d'un caractre Start, d'un mot-cl de LeftSide, de 1 30


mots-cls de donnes, d'un mot-cl de RightSide et d'un caractre de fin.

Il doit y avoir une Quiet Zone d'au moins 2 modules de chaque cot.

Des mots-cls de remplissage peuvent s'intercaler entre les donnes et les


mots-cls de correction, ceux-ci devant tre la fin.

Le premier mot-cl indique le nombre total de mots-cls du symbole incluant :


les donnes, les mots-cls de remplissage et lui-mme, mais excluant les motscls de correction.

Bilal BENLARBI

Rapport de stage BagXpress

Page 32

Figure 8 : Exemple d'un code avec 10 mots-cls de donnes, un 11me mot-cl pour
indiquer le total, un mot-cl de remplissage et 4 mots-cls de correction d'erreurs
(niveau 1).
Avec :
L1

L8

D0

mot-cl

D1

D10

D11

mot-cl

C0

C3

mots-cls

(ct

remplissage

=
mots-cls

LeftSide
mots-cls

de

descripteur
de

correction

gauche)
(bourrage)

de
de
d'erreurs

donnes
longueur
(niveau

1)

R1 R8 = mots-cls RightSide (ct droit).


Ce qui donne le code-barres pdf417 suivant :

Figure 9 : Code-barres PDF417 associ lexemple

Bilal BENLARBI

Rapport de stage BagXpress

Page 33

Codage :
Encodage de bas niveau :

Chaque mot-cl est compos de 17 modules, il comprend 4 barres et 4 espaces (Le


PDF-417 tire son nom de cette mthode) et il dbute par une barre.

Les barres et les espaces font de 1 6 modules de large. (Sauf pour les caractres
Start et Stop)
Le caractre Stop est lui compos de 18 modules.

10

11

12

13

14

15

16 17 18

Start
Stop
Ce qui donne, en binaire (Un module noir est symbolis par "1" et un module d'espace par
"0") :
Start 1
1
1
1
1
1
1 1
0
1
0 1
0
1
0
0 0
Stop 1
1
1
1
1
1
1 0
1
0
0 0
1
0
1
0 0 1

Il existe 3 tables distinctes pour coder les 929 mots-cls.

Chaque ligne n'utilise qu'une table de codage, cette table sera rutilise 3 lignes
plus loin :
- la ligne 1 utilise la table 1,
- la ligne 2 utilise la table 2,
- la ligne 3 utilise la table 3,
- la ligne 4 utilise nouveau la table 1, etc.

Encodage de haut niveau :

On utilisera par la suite les oprateurs : + --> addition, x --> multiplication, \ -->
division entire, MOD --> reste de la division entire.

Les donnes sont compresses dans les mots-cls selon trois modes conus en
fonction de leur efficacit par rapport au type des donnes.

Le mode par dfaut est le mode "Text".

Bilal BENLARBI

Rapport de stage BagXpress

Page 34

Compaction mode
Byte

Datas to encode
ASCII
0 to 255
ASCII

Text

9, 10, 13 & 32 to
127

Numeric

digits
0 to 9

Rate compaction
1.2 bytes/mot-cl

2 characters/motcl

2.9 digits/mot-cl

Dans la suite de cet expos, l'expression "mot-cl" sera abrge en MC.


Les MC numrots 900 928 ont une signification spciale, certains permettent de
passer d'un mode l'autre afin d'optimiser le code.

Avec ECI (Extended Channel Interpretation) : protocole procurant un mode pour


spcifier une interprtation particulire des valeurs des octets ou pour identifier une
page de code particulire. Par dfaut le code ECI est 000003 qui dsigne l'alphabet
Latin ISO 8859-1 (codage des caractres imprimables).

Bilal BENLARBI

Rapport de stage BagXpress

Page 35

Le mode "Texte" possde 4 sous-modes : Majuscules, Minuscules, Mixte : Numrique et


ponctuation, Ponctuation.
Le sous-mode par dfaut est "Majuscules", dans ce sous-mode deux caractres sont
cods dans chaque MC, voici la table des caractres :

Bilal BENLARBI

Rapport de stage BagXpress

Page 36

Bilal BENLARBI

Rapport de stage BagXpress

Page 37

Correction d'erreurs :

Le systme de dtection d'erreurs utilise 2 mots-cls et le systme de correction en


utilise de 2 510.

Le systme de correction utilise la mthode de " Reed-Solomon".


Ces codes de correction d'erreurs sont utiliss galement par les Compact Disks,
DVD, tlphones cellulaires, satellites, modems ADSL, etc.

Le nombre de mots-cls ajouter au code est fonction du niveau de correction que


l'on applique, du fait de la limitation du code 928 mots-cls (dont 1 pour le
nombre de mots-cls) le niveau maximum est limit par le nombre de mots-cls de
donnes.
Le nombre de mots-cls que l'algorithme de correction des erreurs peut
reconstituer est gal au nombre de mots-cls requis par le systme de correction.

Description de la classe Encoding (pdf417.vb) :


Pourquoi nouveau projet ?
Afin de pouvoir utiliser lencodage dans dautres applications et dautres projets
Cette
-

classe
dune

est
fonction

principale

constitue :
Codage

- de 3 fonctions secondaires : QuelMode, Regroupe et Modulo qui sont appeles


par la fonction principale Codage
Voici les prototypes de ces fonctions :
Public Function Codage(ByVal Chaine, Optional ByRef secu = 0, Optional ByRef nbcol
= 0, Optional ByRef CodeErr = 0) As String

Lobjectif de cette fonction est de retourner une chaine de caractre


(String) qui, affiche avec la police PDF417.TTF, donne le code barre
souhait
Le code barre est obtenu en fonction de la variable Chaine$ ncessaire et
des variables optionnelles secu, nbcol et CodeErr passes en paramtre de
la mthode.
Chaine : chaine de caractres encoder. Elle provient de la saisie de
lutilisateur et contient : son nom et son prnom, laroport de dpart et
celui de destination, le numro de vol, ainsi que la date et lheure de la
saisie
Scu : nombre entier qui reprsente le niveau de correction souhait (par
dfaut : -1)
NbCol : nombre entier qui reprsente le nombre de colonnes de motsclefs de
donnes souhaits (par dfaut : -1)
Bilal BENLARBI

Rapport de stage BagXpress

Page 38

Codeerr

: nombre entier qui reprsente un numro derreur

Private Sub Modulo(ByRef ChaineMod, ByRef Diviseur)

Lobjectif de cette fonction est de modifier la valeur de la variable


ChaineMult de la fonction codage qui reprsente le rsultat de la division
entire de par .
ChaineMod : reprsente un trs grand nombre sur plus de 9 chiffres
Diviseur : diviseur, contient le rsultat au retour
ChaineMult : contient au retour le rsultat de la division entire

Private

Sub

Regroupe(ByRef

IndexListe,

ByRef

Liste(,))

Lobjectif de cette fonction est de regrouper les blocs de mme type


IndexListe : numro de ligne en cours de traitement
Liste(,) : tableau dentiers 2 dimensions dans lequel []
Cette mthode intervient

Private Function QuelMode(ByRef chaine As String, ByRef indexChaine As Integer) As


Integer

Lobjectif de cette fonction est de retourner un nombre entier identifiant


le mode dencodage, en fonction du code ASCII du caractre de position
indexChaine de la chaine de caractres chaine

Chaine : chaine
indexChaine

indexChaine :

de caractres dont on extrait le caractre de position

nombre entier qui reprsente le numro de caractre

retourner

Bilal BENLARBI

Rapport de stage BagXpress

Page 39

Remarque :
La variable valnom de la classe BoardingPassGenerator_VB est de taille fixe sur 28
caractres,

comme

le

prvoit

la

norme

IATA

792.

Pour plus dtail, se reporter la page 42.

Webographie :
http://fr.wikipedia.org/wiki/Code-barres
http://fr.wikipedia.org/wiki/PDF-417
http://www.gomaro.ch/Specifications/PDF417.htm
http://grandzebu.net/informatique/codbar/pdf417.htm

Bilal BENLARBI

Rapport de stage BagXpress

Page 40

2 . AN N E X E 2 : S I M UL ATE UR DE S C AN N E R DE C A RTE
D E MB AR Q U E M E N T.
2.1 NORME IATA 792
Les codes-barres prsents sur les cartes dembarquement (en anglais, boarding pass)
sont de type pdf417. Ils respectent la norme IATA 792 (dition de juin 2008, format "M"
tendu ou non, et format "S"). Voici les spcificits du format "M" (daprs le document
Simplifying the Business, Bar Coded Boarding Pass, Implementation Guide, Effective 1
June 2009, 4th Edition de lInternational Air Transport Association (IATA), disponible
ladresse http://www.iata.org/stb/bcbp) :

Figure 10 : norme IATA 792, format "M"


Ce format dfinit lencodage des donnes de la carte dembarquement sur une chaine
de caractres de longueur fixe (valnom dans la classe BoardingPassGenerator) sur 60
caractres, daprs le standard. Cest la raison pour laquelle on a cr la variable
entire CV_LENGTH_BARCODE. Les lments de la colonne Element Description sont
rutiliss dans le programme dans la classe BarCode du programme et sont parfois
renomms :
Noms de la norme IATA 792

Noms des champs associs de la classe


BarCode

Operating carrier PNR Code

PassengerCode

From City Airport Code

FromCity

To City Airport Code

ToCity

Operating carrier Designator

Airline

Date of Flight

JulianDay

Seat Number

Seat

Check-In Sequence Number

Sqnr

Bilal BENLARBI

Rapport de stage BagXpress

Page 41

Remarques :
-

JulianDay indique le numro de jour de lanne auquel le vol a lieu (sur la figure 1,
JulianDay vaut 226, ce qui quivaut au 14 Aot).

La variable valnom du projet BoardingPassGenerator_VB est de taille fixe, sur 28


caractres, cause de la norme IATA. En effet, elle correspond aux lignes
Passenger Name, Electronic Ticket Indicator et Operating carrier PNR Code dont les
longueurs ajoutes valent 28.

2.2 FONCTIONNEMENT DU SIMULATEUR DE SCANNER CARTE


DEMBARQUEMENT
Pour lancer le programme en mode simulation de scanner de carte dembarquement, il
faut ouvrir le fichier App.config du projet DBAClient avec Visual Studio et, la ligne
42, saisir true entre les guillemets :
<add key="PortCameraSimulated" value="true"/>

Cela permet dindiquer au constructeur de la classe CameraCommunication que la


simulation est active.
Ensuite, il suffit de lancer le programme ( laide du raccourci F5).
La page de slection de langue souvre :

Figure 11 : Page de slection de langue (tape 1)

Bilal BENLARBI

Rapport de stage BagXpress

Page 42

La slection de la langue (par un clic sur un drapeau) provoque louverture de la page


de scan de carte dembarquement. Instantanment, le programme dtecte que ltape
de scan est active et ouvre linterface de cration de carte dembarquement
virtuelle :

Figure 12 : Page de scan avec interface de cration de carte dembarquement virtuelle (tape
2)

Linterface est pr-remplie, de faon gagner du temps. Cependant, il est tout de


mme
possible
de
modifier
les
champs.
Attention : Le programme naccepte comme aroport de dpart que laroport
Schwechat International en Autriche (Austria) ; et comme aroport de destination John
F Kennedy Intl New York.
Une fois le remplissage de lIHM termin, il faut valider laide du bouton OK.
Les informations ainsi saisies sont transmises au programme et la page de scan avec
linterface laisse place la page de demande de dpose de bagage, avec, sur le dessus,
la confirmation du scan affichant les donnes saisies :

Bilal BENLARBI

Rapport de stage BagXpress

Page 43

Figure 13 : Page de demande de dpose de bagage et confirmation du scan (tape 3)

Le scan a t simul correctement, le programme suit son fonctionnement normal.


Remarque :
Lorsque le scanner est branch lordinateur (par USB), il est aliment et mme si
le programme ne sexcute pas, le scanner met une lumire rouge lorsquil est excit
(par exemple si on bouge la main en face le scanner). Ainsi, il ne faut pas sinquiter
si, en simulation, le scanner physique semble tre en fonctionnement : ce nest pas le
cas.

Bilal BENLARBI

Rapport de stage BagXpress

Page 44

2.3 LOGIQUE DU PROGRAMME


Afin de conserver la mme logique en mode simulateur et en mode de marche normale, on ne
modifie que la classe DBAClient\CameraCommunication.

DBAClient
\MainWindow.xaml.cs

DBAClient
\App.xaml.cs
Dfinition du mode de
marche (simulation ou
non) selon le fichier de
configuration

- Cration de lobjet IHM de


cration de boarding pass
virtuel
- dfinition de lvnement
de rception des donnes
envoyes par lIHM

Ctor (boolean simulated)

Cration de lobjet
scanner (= camera)

Cration de lobjet de
gestion daffichage du
programme en fonction de
Ctor (string DBAName, ServeurComm comm,
lobjet scanner

AutomateComm autom, CameraComm scanner,


PhidgetComm phidget, PrinterComm printer)

CameraSimulator
\BoardingPassGenerator
\IHM.xaml.vb

DBAClient
\CameraCommunication.cs

Dfinition de lvnement
denvoie de donnes

Ctor (new passenger)

Dfinition de lvnement
de code-barres reu

Pr-remplissage de lIHM :
Paramtrage de laroport
de dpart selon le fichier de
configuration

Dfinition de lvnement
dtat du scanner (teint
ou en lecture)

Show()
Show()

ReadBarCode()
Rception des donnes et dcryptage :
=> cration de lobjet code-barres qui
structure et classe les informations
reues

BarCodeReceivedEvent

PortSerie_DataReceived()

Get()

Saisie des donnes de la carte


dembarquement cre
virtuellement valide

TexteAEncoder

StopReadingBarCode()

CameraStatusEvent

Le scan est termin.


Lutilisateur peut dposer
son bagage dans la
machine et le process
suit son cours normal

CheckCamera()

Lgende :
Le programme sexcute :
- verticalement : de haut en bas
- horizontalement : suivant le sens des flches

Evnement
Dclench
Dclencheur
Appel

Mthode

Appelant

Ctor = Constructeur
Comm = Communication

Bilal BENLARBI

Diagramme de squence du scanner


simul

Rapport de stage BagXpress

Page 45

2.3.2 CODE DIDENTIFICATION DE BAGAGE ET AEROPORT


Dans le code de la DBA (Dpose Bagage Automatise), le code didentification de bagage
(l_tagNumber) est en dur. Cest ce qui explique que dans le code de
CameraSimulator\BoardingPassGenerator, la variable correspondante (m_bagtag) est aussi
crite en dur. Elle prend 5 valeurs diffrentes en fonction de laroport de destination. Tout
cela pour pouvoir effectuer les tests sur la DBA avec une valise dont le code didentification
est celui de laroport de New York : John F Kennedy Intl. Cest ce qui explique que dans le
constructeur de la classe BoardingPassGenerator, on attribue laroport de destination
laroport John F Kennedy Intl. De mme, on a configur laroport de dpart selon laroport
du fichier de configuration :
passenger.FromAirport
m_AirportList.FindAirport(ConfigurationManager.AppSettings("Aeroport"))

Bilal BENLARBI

Rapport de stage BagXpress

Page 46

3 . AN N E X E 3 : S I M UL ATE UR D I M P RI M AN TE DE RE U B AG A GE
3.1. FONCTIONNEMENT DU SI MULATEUR DE LIMPRIM ANTE DE REU
Pour lancer le programme en mode simulation dimprimante de reu, de la mme manire
que pour le scanner, il faut ouvrir le fichier App.config du projet DBAClient avec Visual Studio
et,

la
ligne
48,
saisir
true
entre
les
guillemets
:
<add key="PortPrinterSimulated" value="true"/>

Cela permet dindiquer au constructeur de la classe PrinterCommunication que la simulation


est active.
Ensuite, il suffit de lancer le programme ( laide du raccourci F5).
Suivre la procdure dcrite pour la simulation de scanner.
Dposer le bagage, puis Valider.

Figure 14 : Validation du bagage dpos

Bilal BENLARBI

Rapport de stage BagXpress

Page 47

Ds lors que la machine a termin deffectuer les traitements (vrification, mesure du poids et lecture de
ltiquette), le simulateur dimprimante de reu apparat :

Figure 15 : Contrle du bagage

Figure 16 : Affichage du simulateur de reu

Bilal BENLARBI

Rapport de stage BagXpress

Page 48

Pour simuler le dcrochage du reu, cliquer sur le bouton OK.


La procdure sest bien droule :

Figure 17 : Processus de dpose bagage termin et valid

Bilal BENLARBI

Rapport de stage BagXpress

Page 49

3.2. LOGIQUE DU PROGRAMME


Afin de conserver la mme logique en mode simulateur et en mode de marche normale, on ne
modifie que la classe DBAClient\PrinterCommunication.

DBAClient
\MainWindow.xaml.cs

DBAClient
\App.xaml.cs

DBAClient
\PrinterCommunication.cs

Dfinition du mode de
marche (simulation ou
non) selon le fichier de
configuration

Cration de lobjet de
gestion daffichage du
programme en fonction de
lobjet imprimante

- Cration de lobjet reu


- Dfinition de laction
raliser lorsque
lvnement de reu
dcroch se dclenche

Ctor (boolean simulated)

Cration de lobjet
imprimante (= printer)

Dfinition de lvnement dtat


de connexion de limprimante,
selon quelle est ouverte,
ferme ou quil y a une erreur

Ctor (PrinterCommunication printer, ...)

ReceiptGenerator
\MainWindow.xaml.cs

Ctor ()

Dfinition de lvnement
de reu dcroch

Dfinition de lvnement de
bac papier vide
Dfinition de lvnement
dallumage des phidgets
(avertissements lumineux)

Attente vnement

Ouverture de limprimante

** Scan de la carte dembarquement **


** Dpose du bagage **

PrinterStatusEvent

Set

AddReu(ListPaSsenger liste)

Champs du reu
(remplissage)

Show()

Limpression du reu est


termine.Le process suit
son cours normal
(redmarrage du cycle)

PrinterPresenterEvent
PortSerie_DataReceived()
Clic sur le bouton OK
(simulation du dcrochage
du reu)

Lgende :
Le programme sexcute :
- verticalement : de haut en bas
- horizontalement : suivant le sens des flches

Evnement
Dclench
Dclencheur
Appel

Mthode

Appelant

Ctor = Constructeur

Bilal BENLARBI

Rapport de stage BagXpress

Diagramme de squence de
limprimante simule

Page 50