Note de lecture : Serial Communications, A C++ Developerâs guide, par Mark Nelson
Note : 7 ; Bien que désormais obsolÚte (car concerne surtout Windows 16 bits), reste intéressant sur les principes de gestion des ports série.
Tant que je suis dans les antiquitĂ©sâŠen voici une tout Ă fait honorable ! Certes ce livre a perdu une grande partie de son intĂ©rĂȘt, dâabord avec lâarrivĂ©e du Windows 32 bit et de TAPI puis des infrastructures et librairies qui rendent aujourdâhui transparente les vicissitudes des protocoles de communication.
Cet ouvrage nous permet, aujourdâhui encore, de nous ressourcer sur la mise en Ćuvre des communications Ă bas niveau, lĂ oĂč les caractĂ©ristiques du matĂ©riel ne peuvent ĂȘtre ignorĂ©es ! Mais la bĂȘte est imposante : ce sont 600 pages qui se prĂ©sentent Ă nous sur ce seul sujet, le tout en 11 chapitres ! Le premier dâentre-eux rappellera des souvenirs aux plus anciens dâentre nous, il aborde lâinterface RS 232 C sur 64 pages. Tout y passe, depuis la norme du connecteur, la signification des signaux et les protocoles de transmission modem. LâĂ©lectronique sous-jacente, les fameux UART sont Ă©voquĂ©s, mais leur gestion fera lâobjet dâun chapitre Ă part. Finalement les protocoles dâĂ©change de fichier (Kermit, ZModem, etc.) clĂŽturent le chapitre. CâĂ©tait en quelque sorte le tour du propriĂ©taire.
Le chapitre 2 sâarticule autour de la dĂ©finition de la classe C++ RS232 ; il sâagit dâun wrapper abstrait sur lequel peu de mĂ©thodes concrĂštes « intelligentes » sont implĂ©mentĂ©es. Essentiellement les fonctions de lecture et Ă©criture. Câest un bel exemple de mise sous forme de classe dâun protocole, car tous les signaux de la norme apparaissent sous forme de mĂ©thodes virtuelles. A part cela le chapitre est peu passionnant, essentiellement constituĂ© de listings.
Continue Reading
Ce sont prĂšs dâune centaine de pages qui sont dĂ©diĂ©es au chapitre 3, dĂ©volu Ă lâimplĂ©mentation de RS232C sur lâUART 8250. Toute la premiĂšre partie expliquant le fonctionnement de lâUART est rĂ©ellement trĂšs intĂ©ressante mĂȘme si je regrette le peu qui est consacrĂ© au 16550, certes nettement moins rependu Ă lâĂ©poque, mais nettement plus intĂ©ressant. HĂ©las la seconde moitiĂ© du chapitre est de nouveau consacrĂ© Ă de fastidieux listings bien peu expliquĂ©sâŠ
Le chapitre 4, shared interrupt device rompt la monotonie avec seulement 25 pages. Il est consacrĂ© Ă lâaccĂšs aux ports COM dans lâarchitecture PC via les 2 interruptions qui leurs sont dĂ©diĂ©es (pour 4 ports en principe accessibles). Le code du handler et les principes de gestion sont clairement apprĂ©hendĂ©s. Des informations par ailleurs rares dans la littĂ©rature, pour ne pas dire plus.
Câest Ă un pĂ©riphĂ©rique plus exotique quâest consacrĂ© le chapitre 5 : le Digiboard ! Câest donc une nouvelle sous-classe de RS232 qui nous attend. Un chapitre dont je soupçonne quâil tenait Ă cĆur Ă lâauteur, mais qui nâa pas retenu mon attention.
Plus intĂ©ressant pour moi, mais hĂ©las plus lĂ©gĂšrement traitĂ©, le chapitre 6 nous propose une nouvelle sous-classe de RS232, mais cette fois en sâappuyant sur les primitives disponibles dans le BIOS. Seul 30 pages y sont consacrĂ©es et lâauteur aurait pu faire plus dâeffort pour dĂ©velopper plus clairement les interruptions du BIOS et leur exploitation.
Au chapitre 7, le FOSSIL driver se voit lui aussi consacrer une trentaine de pages. La profondeur de traitement est Ă peu prĂšs la mĂȘme que pour lâimplĂ©mentation BIOS. Mais jâavoue encore une fois que lâaspect exotique de cette norme fait que le chapitre nâa pas retenu mon attention.
Nouvelle alternative au chapitre 8 : une implĂ©mentation sur les API Windows. PrĂšs de 50 pages sont noircies sur le sujet. Cela paraĂźt mieux, mais Ă lâĂ©poque oĂč ces informations Ă©taient vitales pour moi, la profondeur des informations restait bien insuffisante. Mais au moins le livre fournit des informations dâexploitations de ces APIs, choses pratiquement indisponibles par ailleurs en 1993 !
Le chapitre 9 est long de 40 pages. Câest un changement, car on quitte la couche RS232 pour sâattaquer Ă la gestion des modems, avec les fameuses normes V24, V32 et autres et bien sĂ»r le protocole Hayes. La question est bien traitĂ©e et fort clairement. Câest probablement la meilleure source dâinformation que jâai pu croiser sur la question.
Au chapitre 10, on sâattaque aux transferts de fichier, avec les protocoles XModem, YModem et ZModem. La question ne mâintĂ©resse guĂšre et jâai du mal Ă avoir un avis sur le chapitre. Le sujet semble bien traitĂ© et le listing de fichier une fois encore un peu longuet.
Le dernier chapitre du volume va sâintĂ©resser Ă lâĂ©mulation de terminal. Le thĂšme remplit 60 pages et ne semble guĂšre passionnant tel quâil est traitĂ© ici. On est beaucoup dans lâexplication de texte du listing, fort peu sur la dĂ©construction du problĂšme.
Lâauteur a dĂ©veloppĂ© une petite librairie de classes multiplateformes, multi-modems et multi contrĂŽleurs qui, ma foi, mâa bien fait de lâusage Ă son Ă©poque. Le livre gravite entiĂšrement autour de cela ce qui rend parfois le propos un peu rĂ©barbatif et les listings ennuyeux. Mais le volet technique est trĂšs affutĂ© et ce fut trĂšs clairement la meilleure source dâinformation sur bon nombre de sujets qui y sont traitĂ©s. Difficile de faire valoir une pertinence aprĂšs presque 25 ans, pourtant le volume mĂ©rite dâĂȘtre conservĂ© Ă titre dâarchive !
RĂ©fĂ©rence complĂšte : Serial Communications : A C++ Developerâs guide â Mark Nelson â Prentice Hall / M&T Books 1992 - ISBN : 0-13-011776-1