/ / Le protocole série pose des problèmes de portage du code de C à Python - Python, port série, protocoles, pyserial

Problèmes de protocole série lors du transfert du code de C à Python - python, port série, protocoles, pyserial

Je suis un peu débutant avec C et leles subtilités de la communication série. Je vais essayer de fournir toutes les informations que je peux sur cette question; laissez-moi savoir s’il ya quelque chose de plus que je devrais fournir qui pourrait aider.

Je suis en train de porter la communicationprotocole pour un périphérique série (un micromanipulateur) de C à Python, destiné à être utilisé dans une application Python que mon laboratoire est en train de développer. La société nous a fourni le code source d’un petit utilitaire de ligne de commande utilisé pour l’interface avec le périphérique. En utilisant cette logique, notre module Python est capable de générer des blocs de données corrects / identiques, y compris le CRC. Cependant, lorsqu'un bloc de données (identique à un bloc de données généré par le code C) est envoyé par le code Python, il ne reçoit aucune réponse du périphérique. À l’aide d’un programme de surveillance des ports série (Free Serial Port Monitor), j’ai constaté que les communications entre Python et le périphérique différaient dans certains cas de l’utilitaire fourni par la société.

Voici une capture d'écran du journal pour leutilitaire, qui fonctionne correctement. Il montre l'envoi d'un bloc de données et sa réponse, ainsi que l'envoi d'un deuxième bloc de données et le début de la réponse.

Exemple de journal de l'utilitaire

Et voici une capture d'écran de ce qui se passe avec notre code Python; comme vous pouvez le constater, il envoie le bloc de données sans réponse.

Exemple de journal de python

Quant aux autres informations qui pourraient être utiles, j’utilise "les bibliothèques série standard Python. La structure du bloc de données est composée de 14 caractères ASCII, commençant par STX et se terminant par ETX. Les huit premiers caractères de données correspondent à des fonctions, adresses, valeurs, etc., tandis que les quatre derniers caractères sont le CRC.

Comme je le disais, je suis un peu un noob à cela et jeJe ne sais vraiment pas par où commencer. Tous les conseils, l’assistance ou les ressources qui pourraient m'aider à comprendre cela seraient grandement appréciés, et laissez-moi savoir s’il ya des informations plus précises à fournir!

http://reentry.mit.edu/extserialport.c

http://reentry.mit.edu/extserialport.h

Réponses:

0 pour la réponse № 1

J'ai trouvé que win32serial.py, fourni avec pyserial, fournit directement (liaisons?) aux paramètres de série de l'API Windows, ce qui semble avoir fonctionné, après avoir copié ligne par ligne les paramètres du code C, y compris le contrôle de flux et RTS. Merci beaucoup @Serge pour votre temps et votre aide!