Stap 4: Arduino Code - uitleg 2
De readBT-functie
Dus... laten we eens een kijkje op het "brein" :-)
Alles wat we hier doen is lezen char c, check of deze overeenkomt met een van onze headers. BTW: we ook omgaan met de TIMESet functie hier, als het valse oproep de timesync functie.
Laten we eens een kijkje op de lijn heks grepen de "SMS1_HEADER". Arduino zal dit besluit als het ontvangt "$" zal de "oude" array gegevens wissen en vervolgens afgelezen Serial en schrijf de volgende tekens naar de inData Array tot het "SMS2_HEADER" wordt (dat is de "|") of de ArraySize (16) wordt bereikt.
Let´s gaan naar "SMS0_HEADER" that´s een enkel karakter ("!") pakket. Het zal een vlag voor de sms-clear mechanica en zal duidelijk de matrix en de kennisgeving.
De "GPS_HEADER" (char "&") we hoeven niet een trailer hier, omdat alles wat we doen is het gebruik van de opdracht Serial.parseInt().
bv. Seriële stream "& 123,456,...". Als we de Serial.parseInt() gebruiken wij analyseren de stream en "get" de int´s ("123") uit. De functie zal eindigen als een char geen getal is (","). Wanneer we het opnieuw gebruiken, zullen we de int "456"
Als u verdere vragen hebt, voel je vrij om het stuur me een bericht.
void readBT() // Handle received Data<p>{ while (Serial.available() > 0){ char c = Serial.read(); while (timeStatus()!= timeSet) { // sync Clock if timeSet false timesync(); } if(c == TIME_HEADER) { // Handle Packet for Time, see definitions timesync(); } if (c == SMS1_HEADER) // Handle Packet for SMS, see definitions { memset(inData, 0, sizeof(inData)); //Clear old Data //bstat = 1; notifier = 1; sms = 1; char c = Serial.readBytesUntil(SMS2_HEADER, inData, sizeof(inData)); //write Data to ARRAY } if (c == SMS0_HEADER || sms == 0) // Handle Packet for SMS RESET, see definitions { //bstat = 0; //notifier = 0; sms = 0; memset(inData, 0, sizeof(inData)); //Clear old Data } if(c == CALL1_HEADER){ // Handle Packet for call, see definitions memset(inCall, 0, sizeof(inCall)); //Clear old Data //bstat = 1; notifier = 1; call = 1; char x = Serial.readBytesUntil(CALL2_HEADER, inCall, sizeof(inCall)); //write Data to ARRAY } if(c == CALL0_HEADER || call == 0){ // Handle Packet for call reset, see definitions //bstat = 0; //notifier = 0; call = 0; memset(inCall, 0, sizeof(inCall)); //Clear old Data } if(c == GPS_HEADER){ // Handle Packet for GPS INFO, see definitions gps = 1; alt = Serial.parseInt(); spd = Serial.parseInt(); } Serial.flush(); c = ' '; } }</p>