Port COM

Bonjour

J'ai pris récemment un Arduino Decimila parce que ce micro processeur peut communiquer avec l'ordinateur en simulant un port COM.

Seulement, je n'ai jamais utilisé de liaison COM dans un programme, alors je cherche un exemple dans un programme en C

Il y avait bien un exemple sur le site d'Arduino mais il utilise des bibliothèques de Linux et je suis sous Windows.
(Arduino-serial: C code to talk to Arduino – todbot blog)

Donc ma question: auriez vous un exemple de code en C pour interfacer le micro-porcesseur sous windows?

Quel est ton environnement de programmation ? Nous utilisons MinGW pour écrire nos codes en C sous Windows.

Voici un article sur l'environnement IDE :

Voici un article sur l'installation de MinGW (il peut dater, me prévenir et on le mettra à jour) :

Si tu as encore le choix, tu peux commencer par tester avec Processing : il existe des exemples de code sur notre site et c'est vraiment pratique pour communiquer simplement avec une Arduino.

merci pour les liens

je regarde tout de suite

J'utilise Code Blocks pour l' environnement

Mais comme je suis débutant, j'utilise aussi la SDL pour mon programme , une bibliothèque simple.

Charger un programme avec MinGW ne risque t'il pas de m'empêcher d'utiliser la SDL ?

Aucune idée, tiens nous au courant :slight_smile:

Je dois oublier quelque chose car ça ne fonctionne pas.

Lorsque je compile, les erreur passés ne sont plus là mais une centaine de nouvelles erreurs sont arrivées...

je retente encore l'installation si ça marche, je vous le fait savoir.

j'ai un autre problème relatif au micro processeur:

pour tester mon programme j'utilisais l'interface de Arduino

le programme doit me renvoyer automatiquement des constantes, mais, il les envois en ASCII malgré ça :

Serial.print(attenteDesDonnees, DEC );

Relis la documentation de référence, c'est exactement ce que fait Serial.print(value, DEC) : envoyer des caractères ASCII représentant la valeur écrite en base 10.

j'aurais aussi une question

le meilleur soft c'est MinGW ou processing

Pour ton besoin, c'est Processing.

Je vois ce que vous voulez dire, je me suis égaré,
mais dans ce cas qu'est-ce que ceci:

?ìè5;
Ô2À?zº:

ìa

Hmm... ça ressemble à une mauvaise vitesse de transmission du côté récepteur.

Il me semble que j'avais eu des problèmes similaires.

Ici

port les caractères illisibles, c'était bien la vitesse,
j'avais sélectionné 28800 b/s au lieu de 9600 b/s.

merci, maintenant c'est lisible.

pour l'interface USB je le lis avec attention car ç pourais bien être une solution au problème

Sous max msp, c'est le port 8 ou 9 .

val .

Pour la partie embarquée, ça fonctionne maintenant merci

mais je n'ai qu'une expérience limité de la programmation ( un très faible langage c )
cependant j'aimerais utiliser les fonctions C++ de cette page

http://www.arduino.cc/playground/Interfacing/CPPWindows

le compilateur les valide toutes, elle fonctionnent sur mon programme, seulement voilà, quelle variable mettre dedans :

Serial::Serial(char *portName)
lorsque je met 3 pour "com 3"

Serial::ReadData(char *buffer, unsigned int nbChar)
la variable sur la quelle on veut écrire
et la deuxième variable ??? (devrais correspondre au port ou à la taille du mot mais je ne l'ai pas)

Serial::WriteData(char *buffer, unsigned int nbChar)
de même

portName devrait plutôt être "COM3".

nbChar est le nombre maximum de caractères que tu attends à recevoir (read) et directement le nombre de caractères envoyés (write), et ce dernier tu dois forcément le connaitre ou pouvoir le retrouver.

Je pense que je n'ai pas très bien compris comment utiliser ces fonctions

voici un exemple de ma compréhension actuelle:

Serial(*COM3);                               // je crée la ligne avec le port COM3

COM3.ReadData(recu, tailleMot);              // je lis les données dans "recu" avec pour
                                             // dimension la variable "tailleMot"


COM3.ReadData(Profondeur, tailleMot);        // J'écrit dans le "buffer" les information
                                             // de la variable  "profondeur" en indiquant
                                             // la taille du mot 


COM3.~Serial();                              // Je ferme ma connection

et le compilateur est heureux de me répondre :

request for member ReadData' in COM3', which is of non-class type `Serial*'

COM3' is not of type Serial'

hello,

non le code n'est pas bon. utilise quelque chose de plus simple comme Processing si tu ne connais pas C++ et comment manipuler les classes.

Processing est vraiment plus simple? (quand on ne connais que des brides de C?)
Puis je utiliser la SDL avec Processing ?(bibliothèque dont certaines fonctions sont indispensables pour le projet)

Oui Processing est vraiment très simple. Quelles sont les fonctions de SDL dont tu as tellement besoin ?