Étape 4: Arduino Code - explication 2
La fonction readBT
Alors... permet d’avoir un regard sur le « cerveau »:-)
Tout ce que nous faisons ici est lecture char c, vérifier si elle correspond à l’un de nos en-têtes. BTW : nous nous occupons aussi la fonction TIMESet ici, si c’est faux appel la fonction timesync.
Permet d’avoir un regard sur les poignées de sorcière de lignes la « SMS1_HEADER ». Arduino prendra cette décision lorsqu’il reçoit des « $», il va effacer le tableau « vieux » Data puis lire numéro de série et écrire ce qui suit chars à l’inData tableau jusqu'à ce qu’il obtient « SMS2_HEADER » (c’est le "|") ou le ArraySize (16) est atteint.
Let´s passer à « SMS0_HEADER » that´s un char unique ("!") paquet. Il fixera un drapeau pour la mécanique de sms-clear et efface le tableau et la notification.
Le « GPS_HEADER » (char « & ») nous ne devons pas une remorque ici parce que tout nous faire est d’utiliser la commande Serial.parseInt().
par exemple. Flux de la série "& 123 456,...". Si nous utilisons le Serial.parseInt() nous analysera le flux et « obtenir » l’int´s ("123") hors de lui. La fonction se termine si un char n’est pas un nombre (","). Lorsque nous l’utilisons à nouveau, nous obtiendrons l’int « 456 »
Si vous avez d’autres questions, n’hésitez pas à m’envoyer un mail.
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>