Advertisement
MatthijsFontys

Arduino handle serial message

Dec 18th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* ARDUINO MESSAGE HANDLING */
  2.  
  3. String currentMessage; // For holding the serial messages
  4. bool isMessage = false; // True when is message is being send
  5.  
  6. // Message functions
  7. void readChar() {
  8.   if (Serial.available() > 0) {
  9.     char incomingChar = (char)Serial.read();
  10.  
  11.     // Start the message
  12.     if (incomingChar == '#' && ! isMessage)
  13.       isMessage = true;
  14.  
  15.     // END message
  16.     else if (incomingChar == '%' && isMessage) {
  17.       handleMessage();
  18.       currentMessage = "";
  19.       isMessage = false;
  20.     }
  21.  
  22.     // Append to the message
  23.     else if (isMessage)
  24.       currentMessage += incomingChar;
  25.   }
  26. }
  27.  
  28. void handleMessage() {
  29.   // Set to remote control
  30.   if (currentMessage == "REMOTE_CONTROL") {
  31.     digitalWrite(RED_LED, HIGH);
  32.     setRGB(remoteColor);
  33.     mode = remote;
  34.   }
  35.     if (currentMessage.startsWith("SET_RED")) {
  36.       remoteColor[0] = currentMessage.substring(currentMessage.indexOf(':') + 1).toInt();
  37.     }
  38.     else if (currentMessage.startsWith("SET_GREEN")) {
  39.       remoteColor[1] = currentMessage.substring(currentMessage.indexOf(':') + 1).toInt();
  40.     }
  41.     else if (currentMessage.startsWith("SET_BLUE")) {
  42.       remoteColor[2] = currentMessage.substring(currentMessage.indexOf(':') + 1).toInt();
  43.     }
  44.     // saving preset modes
  45.     else if (currentMessage.startsWith("SET_PRESET")) {
  46.       int index = currentMessage.indexOf(',');
  47.       String presetName = currentMessage.substring(currentMessage.indexOf(':') + 1, index);
  48.       Serial.println(presetName);
  49.       int presetNumber = currentMessage.substring(index + 1).toInt() -1;
  50.       remoteNames[presetNumber] = presetName;
  51.       remotePresets[presetNumber][0] = remoteColor[0];
  52.       remotePresets[presetNumber][1] = remoteColor[1];
  53.       remotePresets[presetNumber][2] = remoteColor[2];  
  54.     }
  55.       else if (currentMessage.startsWith("GET_PRESET")){
  56.         int preset = currentMessage.substring(currentMessage.indexOf(':') + 1).toInt();
  57.         sendPreset(preset);
  58.         }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement