Bonjour,
J'ai un petit souci alors que j'essaie de développer un logiciel graphique permettant de communiquer avec une carte arduino pour contrôler 2 servomoteurs...
J'explique, le code arduino prend 3 octets en paramètre, en héxa : AA(permet de définir le début d'une communication), 01 ou 02(permet de choisir quel servomoteur on veut actionner) et une valeur entre 00 et B4 (permettant de définir l'angle que doit prendre le servomoteur)... J'ai essayé de communiquer avec un script python et la bibliothèque pyserial et là aucun problème ça fonctionne.
Seulement je voudrais développer mon programme en C++ avec Qt.. Pour se faire j'utilise la bibliothèque de communication avec le port série QserialDevice.
Avec cette bibliothèque j'arrive à me connecter mais je n'arrive pas à envoyer un ordre compréhensible par l'arduino..
Voici le code :
La méthode pour se connecter :
La méthode pour écrire sur le port série (en cours) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 serial->setDeviceName(port); if (serial->open(AbstractSerial::ReadWrite | AbstractSerial::Unbuffered)) { if (!serial->setBaudRate(AbstractSerial::BaudRate9600)) { qDebug() << "Set baud rate " << AbstractSerial::BaudRate9600 << " error."; return false; }; if (!serial->setDataBits(AbstractSerial::DataBits8)) { qDebug() << "Set data bits " << AbstractSerial::DataBits8 << " error."; return false; } if (!serial->setParity(AbstractSerial::ParityNone)) { qDebug() << "Set parity " << AbstractSerial::ParityNone << " error."; return false; } if (!serial->setStopBits(AbstractSerial::StopBits2)) { qDebug() << "Set stop bits " << AbstractSerial::StopBits1 << " error."; return false; } if (!serial->setFlowControl(AbstractSerial::FlowControlOff)) { qDebug() << "Set flow " << AbstractSerial::FlowControlOff << " error."; return false; } qDebug() << "Connexion réussi"; return true; }else{ return false; }
Je pense que les octets que j'envoi n'ont pas la bonne valeur où alors que mes paramètres de connexion sont mauvais... J'ai essayé plusieurs possibilités mais en vain...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 QByteArray bytes; //data to send qint64 bw = 0; //bytes really writed data = "170"; bytes.clear(); bytes.append(170); data = "49"; bytes.append(49); data = "80"; bytes.append(180); if(serial != NULL){ bw = serial->write(bytes); qDebug() << "Ecriture sur le port serie: " << bw << " bytes"; serial->flush(); }
Quelqu'un aurait déjà utilisé QserialDevice avec l'arduino ou aurait une idée ?
Merci
Partager