Snažím sa napísať jednoduchú celočíselnú hodnotu z aplikácie Arduino Mega 2560 do aplikácie Qt. Baudrate je nastavené na Serial.read()
funguje dobre, keď odosielam údaje cez otvorený port s serial->write(some_data);
z aplikácie Qt.
digitalWrite(SS, LOW);
if (Serial.available() == 2) {
response1 = SPI.transfer(Serial.read());
response2 = SPI.transfer(Serial.read());
}
digitalWrite(SS, HIGH);
Vyššie uvedený kód funguje dobre. Predtým som čítal ďalšie a musel som ich pridať delay(3)
aby to fungovalo. Teraz chcem poslať odpoveď späť
Serial.print((response2 << 8 ) | (response1 & 0xFF));
Vždy však existujú skrátené číslice. Z logického analyzátora viem, že odpoveď je napr. 8193
tak s QByteArray b = serial->readAll();
Mám výsledky ako 8
, 81
, 819
, a niekedy 8193
, I.e .: vždy sú posledné číslice skrátené náhodne. Domnievam sa, že je to tiež problém s načasovaním, ale nenašiel som pre to riešenie.
odpovede:
0 pre odpoveď č. 1Len v prípade, že niekto čelí rovnakému problému: Zmena Baudrate z 9600 na 112500 to vyriešila.