Moniteur innaccessible pendant une communication serial

Bonjour,

J'ai réalisé un montage dans lequel j'ai établi une communication serial entre arduino et un programme extérieur (ici pure data). Pour m'assurer que tout fonctionne correctement, je souhaiterais pouvoir afficher les valeurs reçus par la carte arduino sur son moniteur avec Serial.print(). C'est ce que propose notamment cet exemple d'utilisation de la fonction toFloat() : https://www.arduino.cc/en/Tutorial/StringToFloatExample

Le problème est que je n'arrive pas à ouvrir le moniteur pour lire les données, car un message d'erreur apparaît quand j'essai de l'ouvrir : Erreur d'ouverture du port série « COM3 ». (Port busy). Et en effet, c'est bien le COM3 qui est utilisé pour la communication entre arduino et pure data. Je précise par ailleurs que la communication fonctionne puisque je peux effectivement contrôler ma carte depuis pure data, je cherche seulement dans ce cas à afficher les valeurs reçus par arduino.

Le problème a l'air hyper basique, mais je ne trouve pas de solution, et l'ensemble des exemples que j'ai pu voir utilisent Serial.print(), ce qui pose problème chez moi étant donné que je n'arrive pas à avoir accès au moniteur. N'y a-t-il pas moyen d'utiliser le moniteur en même temps qu'arduino communique avec "l'extérieur" ?

J'ai l'impression de bloquer sur un truc évident... :confused:

ascinol:
Le problème a l'air hyper basique, mais je ne trouve pas de solution, et l'ensemble des exemples que j'ai pu voir utilisent Serial.print(), ce qui pose problème chez moi étant donné que je n'arrive pas à avoir accès au moniteur. N'y a-t-il pas moyen d'utiliser le moniteur en même temps qu'arduino communique avec "l'extérieur" ?

J'ai l'impression de bloquer sur un truc évident... :confused:

Bonjour
puredata et le programme serial monitor utilisent le meme vecteur de communication de communication uart/usb
un meme port com (ici com3) ne peut etre ouvert que par un seul programme à un instant T , cette ouverture rend le port com3 "busy" occupé pour les autres programmes qui tenterait une ouverture.

Merci Artouste, c'est donc impossible d'utiliser le moniteur dans cette situation.

Mais alors, existe t'il une solution alternative pour contrôler les valeurs que reçoit la carte, ou simplement pour debugger le code ? C'est quand même très contraignant de ne pas pouvoir utiliser Serial.print()

Utilise un SoftwareSerial vers un autre port de COM du PC, ou un HardwareSerial si tu utilises une MEGA, avec un convertisseur USB / série.
Il serait plus intéressant de réserver le port de programmation pour l'IDE, et d'envoyer les données vers Pure Data par le second port, par contre tu seras limité en vitesse s'il s'agit d'un SftwareSerial.

Ta demande manque de données : type de carte, vitesse de communication.

hbachetti:
Utilise un SoftwareSerial vers un autre port de COM du PC, ou un HardwareSerial si tu utilises une MEGA, avec un convertisseur USB / série.
Il serait plus intéressant de réserver le port de programmation pour l'IDE, et d'envoyer les données vers Pure Data par le second port, par contre tu seras limité en vitesse s'il s'agit d'un SftwareSerial.

La librairie SoftwareSerial a l'air d'être exactement ce qu'il me faut. Merci. Je vais regarder ça en détail.

hbachetti:
Ta demande manque de données : type de carte, vitesse de communication.

La carte est une arduino uno, et la vitesse de communication (les baud si je comprend bien) est de 9600, côté arduino et pure data.

Donc aucun doute à avoir : réserver le SoftwareSerial (avec un convertisseur USB / série) à la communication avec Pure Data, le port USB hard de la UNO restant le canal dédié au chargement + moniteur série.

Si pas encore en possession d'un convertisseur préférer un FT232.

Merci hbachetti pour ces précisions. Je n'ai plus qu'à me procurer un convertisseur pour essayer ça.