J'essaie d'écrire une valeur entière simple d'un Arduino Mega 2560 à une application Qt. Baudrate est réglé sur 9600 et Serial.read()
fonctionne bien lorsque j’envoie des données via un port ouvert avec serial->write(some_data);
à partir de Qt Application.
digitalWrite(SS, LOW);
if (Serial.available() == 2) {
response1 = SPI.transfer(Serial.read());
response2 = SPI.transfer(Serial.read());
}
digitalWrite(SS, HIGH);
Le code ci-dessus fonctionne bien. J'ai lu un autre avant et devais ajouter delay(3)
pour que cela fonctionne. Maintenant je veux renvoyer la réponse
Serial.print((response2 << 8 ) | (response1 & 0xFF));
Mais il y a toujours des chiffres tronqués. Je sais d'après l'analyseur logique que la réponse est, par exemple, 8193
donc avec QByteArray b = serial->readAll();
J'obtiens des résultats comme 8
, 81
, 819
, et parfois 8193
. C'est-à-dire que les derniers chiffres sont toujours tronqués aléatoirement. Je suppose que c'est aussi un problème de timing, mais je ne pouvais pas trouver de solution à ce problème.
Réponses:
0 pour la réponse № 1Juste au cas où toute personne confrontée au même problème: changer le débit en bauds de 9600 à 112500 corrigeait ce problème.