Slide 1

Slide 1 text

Ma caisse enregistreuse en Node.js Paul SOUCHE

Slide 2

Slide 2 text

Qui je suis / d’où je viens Paul Souche Développeur Front-end @

Slide 3

Slide 3 text

Présentation interactive Essayez le hashTag : #maCaisseNodejs Seulement 20 x 2 caractères → Soyez créatifs vous aurez alors 5 secondes minimum pour prendre une photo...

Slide 4

Slide 4 text

Le contexte But : Gérer des périphériques monétiques et éditiques depuis un client léger. Problème : Ces équipements communiquent via le port série.

Slide 5

Slide 5 text

Le contexte Comment atteindre les ports Série depuis un navigateur ? - ActiveX ? - ChromeApp ? - Applet Java ? - Serveur local Il faudra de toute façon installer quelque chose sur le poste client.

Slide 6

Slide 6 text

Le contexte Le back est développé sur Wakanda (4D javaScript) → permet de ne pas changer de langage Comment gérer le protocole COM sur le front ?

Slide 7

Slide 7 text

L’architecture Node.js à la rescousse : - API permettant de communiquer sur les ports séries existante : voodootikigod / node-serialport - Serveur express minimal pour une API bas niveau

Slide 8

Slide 8 text

L’architecture

Slide 9

Slide 9 text

L’architecture

Slide 10

Slide 10 text

La stack - AngularJS - Bootstrap - Express - Node - npm, Bower & Grunt

Slide 11

Slide 11 text

La stack Les modules en + : - node-serialPort : voodootikigod / node-serialport - angular-ui bootstrap : angular-ui / bootstrap - paperwork : lperrin / paperwork - ngTailor : lauterry / ngTailor - nodemon : remy / nodemon

Slide 12

Slide 12 text

La stack : le front

Slide 13

Slide 13 text

La stack : le back

Slide 14

Slide 14 text

La stack : le port série Exemple d’échange : EMETTEUR ENQ (5) STX + données + ETX + LRC EOT (4) RECEPTEUR ACK (6) ACK

Slide 15

Slide 15 text

La stack : le port serie

Slide 16

Slide 16 text

Démo ?

Slide 17

Slide 17 text

Conclusion Lib serialPort node vraiment complète : - liste des ports série disponibles sur la machine - accès aux callbacks de déconnexion Les difficultés : - CORS et son application par les browsers - L’encodage ascii avec node : NUL.toAscii = ‘ ‘ (V8)

Slide 18

Slide 18 text

Questions ? Merci à : - AREGIE - Hamdi, Douglas & Grég - nodejsParis - Vous - Le fer à souder - La caisse de l’hippopotamus à Neuilly - La caisse du franprix en bas de chez moi