Je contrôle un périphérique sur une connexion série à l'aide de LabVIEW (version 7.0). Il est connecté via USB et installé en tant que port série virtuel sur l'ordinateur (sous Windows XP). De temps en temps, mon appareil tombe en panne quand mon programme envoie une commande, et il est incapable d'accepter plus d'entrée (le périphérique lui-même cesse également de fonctionner) jusqu'à ce qu'il ait expiré.Échec de la communication série dans LabVIEW
J'ai regardé le trafic de port série en utilisant Portmon. Chaque fois que le périphérique plante, le pilote série envoie la commande que j'envoie en utilisant mon programme quatre fois au lieu d'une seule fois, avec une commande IOCTL_SERIAL_GET_COMMSTATUS entre les deux. Je ne peux pas voir ce que cette dernière commande retourne, mais je suppose que quelque chose se passe dans la communication plus tôt. Je pense que ma configuration du port n'est pas tout à fait correcte, mais je n'ai aucune idée de comment ou pourquoi. J'ouvre et ferme la connexion à mon appareil chaque fois que je veux écrire quelque chose. Par souci d'exhaustivité: il a une vitesse de transmission de 9600, 8 bits, aucune parité, 1 bit d'arrêt et aucun contrôle de flux. Je suis conscient que les paramètres corrects de ces paramètres dépendent de l'appareil, mais le fabricant n'a fourni aucun paramètre recommandé.
Outre Portmon, vous pouvez également obtenir la perspective LabVIEW des communications série à l'aide de NI I/OTrace - http://digital.ni.com/public.nsf/allkb/282C5D41E2BA04F2862574BA007803B9. Les lignes qui apparaissent en rouge indiquent les conditions d'erreur. –
Afin de vous aider, vous devez fournir des informations plus spécifiques. À quel périphérique vous connectez-vous, quel pilote utilisez-vous et pouvez-vous publier un extrait de votre code labview, même si, comme suggéré, cela pourrait ne pas être le problème. Avez-vous un autre programme qui n'a pas ce problème en utilisant le même pilote. –
@ D.J.Klomp Spécifiquement, l'appareil est un générateur RF (fabriqué par WindFreak, le modèle est SynthUSBii). Il contient un microcontrôleur ATmega32U2. Comme je l'ai décrit ci-dessous, l'ajout d'un retour chariot à chaque commande a résolu mon problème, de sorte qu'il ne dépend pas du programme qui contrôle le périphérique. Je me rends compte que ce problème peut être un peu trop spécifique pour être traité ici, car je suppose que cela dépend beaucoup de la façon dont le microcontrôleur est programmé. – Julius