ArduinoBlueTooth (NotSoSmart) titta på (4 / 5 steg)
Steg 4: Arduino kod - förklaring 2
Funktionen readBT
Så... kan ta en titt på "hjärnan" :-)
Allt vi gör här läser char c, kontrollera om det matchar något av våra huvuden. BTW: vi hanterar också funktionen tidInställning här, om det är falskt samtal timesync funktionen.
Kan ta en titt på linje häxa handtagen "SMS1_HEADER". Arduino kommer att fatta detta beslut om den tar emot "$" det kommer att klara den "gamla" arrayen Data och sedan läsa från Serial och skriva följande tecken till inData Array tills det blir "SMS2_HEADER" (det är den "|") eller ArraySize (16) nås.
Let´s gå vidare till "SMS0_HEADER" that´s en enda char ("!") paket. Det kommer att ange en flagga för sms-clear mekanik och rensar matrisen och anmälan.
"GPS_HEADER" (char "&") vi behöver inte en trailer här eftersom vi är med kommandot Serial.parseInt().
t.ex. Seriell ström "& 123,456,...". om vi använder Serial.parseInt() vi analysera strömmen och "få" int´s ("123") ur den. Funktionen kommer att avslutas om en char inte är ett tal (","). När vi använder den igen, får vi int "456"
Om du har ytterligare frågor, Välkommen att maila mig.
void readBT() / / handtag fick Data < p > {
medan (Serial.available() > 0) {
char c = Serial.read();
medan (timeStatus()! = tidInställning) {/ / synkronisera klockan om tidInställning falskt
TimeSync();
}
IF(c == TIME_HEADER) {/ / hantera paket för tid, se definitioner
TimeSync();
}
om (c == SMS1_HEADER) / / hantera paket för SMS, se definitioner
{
MEMSET (inData, 0, sizeof(inData)); Bort gamla Data
bstat = 1;
anmälaren = 1;
SMS = 1;
char c = Serial.readBytesUntil (SMS2_HEADER, inData, sizeof(inData)); skriva Data till matris
}
om (c == SMS0_HEADER || sms == 0) / / hantera paket för SMS ÅTERSTÄLLS, se definitioner
{
bstat = 0;
anmälaren = 0;
SMS = 0;
MEMSET (inData, 0, sizeof(inData)); Bort gamla Data
}
IF(c == CALL1_HEADER) {/ / hantera paket för samtal, se definitioner
MEMSET (inCall, 0, sizeof(inCall)); Bort gamla Data
bstat = 1;
anmälaren = 1;
Ring = 1;
char x = Serial.readBytesUntil (CALL2_HEADER, inCall, sizeof(inCall)); skriva Data till matris
}
om (c == CALL0_HEADER || kallar == 0) {/ / hantera paket för samtal reset, se definitioner
bstat = 0;
anmälaren = 0;
Ring = 0;
MEMSET (inCall, 0, sizeof(inCall)); Bort gamla Data
}
IF(c == GPS_HEADER) {/ / hantera paket för GPS-INFO, se definitioner
GPS = 1;
Alt = Serial.parseInt();
SPD = Serial.parseInt();
}
Serial.flush();
c = ' ';
}
} < /p >