ako naprogramovat

Daniel Valuch balu na k-net.fr
Pátek Duben 12 18:19:33 CEST 2024


zdravim osadenstvo,

programovat viem len velmi zakladne, preto by som mal na piatok 
algoritmicku... Dokoncujem ziskavanie presneho casu z GNSS modulu o 
ktorych sme tu uz nejaky cas rozpravali.

Ten generuje dva typy vystupu po seriovej linke. Klasicky ascii, ktory 
je ukonceny \n znakom a parsovanie tohoto stringu je trivialne (robim v 
arduino ide). Prijimaju sa data, tie sa pridavaju do stringu a ked pride 
\n tak sa to rozobere a urobi co treba

void serialEvent() {
   while (Serial.available()) {
     // get the new byte:
     char inChar = (char)Serial.read();
     if (inChar == '\n') {
         // sprava/retazec je hotovy, rozparsuj a urob co treba
       tempString = "";
     }
     // keep receiving until \n arrives
     else {
       // add it to the inputString and keep receiving:
       tempString += inChar;
     }

Druhy vystup je ale binarny, prichadzaju pakety, ktore maju strukturu 
definovanu, ale paket zacina opacne.

0000  B5 62 06 8A 18 00 00 05 00 00 01 00 76 10 01 05
0010  00 53 10 01 7E 01 91 20 00 7F 01 91 20 01 00 B6

Prve dva bajty na zaciatku B5 62 vzdy oznacuju zaciatok paketu

dalsie dva 06 8A oznacuju o aky paket ide

nasledujuce dva 18 00 dlzku kolko byteov spravy nasleduje (v tomto 
pripade 24)

potom je samotna sprava

a na konci 00 B6 su dva bajty checksum

a s tymto si neviem poradit, ako to zapisat aby to pocuvalo kedy pride 
B5 62, pockalo ako dlha bude sprava a potom zapisalo do nejakeho stringu 
data.

Ako na to?

dakujem,

b.

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240412/58a314f5/attachment.htm>


Další informace o konferenci Hw-list