• # Port série

    Posté par . En réponse au message lecture d'un port. Évalué à 9.

    Tout d'abord, merci d'avoir fait un effort sur l'orthographe.

    Pour le port série, il n'y a pas de « protocole » à proprement parler. Renseigne-toi un peu sur le fonctionnement d'une ligne série d'une manière générale et tu verras que c'est très simple.

    Pour résumer, disons que le port maintient au repos sa ligne de transmission à l'état 1 (5V), ce qui lui permet éventuellement de détecter une rupture de câble. Ensuite, au moment de transmettre, le port série commence par émettre un « bit de start », c'est-à-dire un bit toujours à 0, pour indiquer qu'il commence la transmission d'un octet, puis il transmet les bits de l'octet proprement dit, en commençant par le bit de poids faible. Enfin, selon les configurations, il émet généralement un bit de parité (l'équivalent d'un checksum sur un seul bit) pour savoir rapidement si l'octet transmis l'a été sans erreur. Enfin, toujours optionellement, un voire deux bits de stop.

    En outre, le port série est en général équipé de lignes RTS et CTS (man stty) pour Request To Send et Clear To Send. Tu peux demander à ton port série d'écouter ces lignes ou non. Par défaut, elles sont prise en compte. Cela sert à l'équipement terminal de transmission de données (typiquement le modem que tu lui mets au cul), pour pouvoir donner le feu vert au port lorsqu'il a établi la communication et qu'il est prêt à transmettre.

    Evidement, tout cela est géré électroniquement. Même au niveau de l'assembleur, on ne voit que les ports I/O de l'interface et l'on reçoit l'octet tout fait.

    C'est extrêmement simple, robuste, et cela n'a rien à voir par exemple avec le fonctionnement du bus USB, qui s'apparente plus à une sorte d'Ethernet, et dont les spécifications occupent un classeur de dix centimètres d'épaisseur. A l'époque du DOS, la plupart des programmes écrits en assembleur pilotait directement le port avec appels I/O plutôt que de passer par un pilote dédié, tellement c'était trivial.

    Tapes « RS232 » (voire même RS232C) dans Google, qui décidément fait beaucoup pour toi :-), pour obtenir plus d'infos.


    Pour ton problème, vérifie déjà le type de câble que tu utilises pour relier tes ports série. Il faut que ce soit un NULL-MODEM (soit un câble série croisé). Ensuite, vérifie que les ports soient réglés à la même vitesse de chaque coté.