//*************************************************************************
//** created 2014                                                        **
//** by dataino www.dataino.it                                           **
//** modified 18 Aug 2014                                                **
//** by G. Carmelo                                                       **
//*************************************************************************
//** Dataino Serial version 001                                          **
//** Copyright (c) 2015 Carmelo G.                                       **
//** If you require a license, see                                       **
//** http://www.opensource.org/licenses/bsd-license.php                  **
//*************************************************************************
//**                    PROGRAMM VARIABLE AND CONST                      **
//*************************************************************************
boolean VAR_IN = false;             // switch fon incoming variable
boolean VAL_IN = false;             // switch fon incoming value
int valId = 0;                      // Variable ID
boolean stringComplete = false;     // 
unsigned long Timer = 100;          // Time basis to do something
const int MAX_STRING_LEN = 256;     // the largest string you will process
char stringBuffer[MAX_STRING_LEN];  // static buffer for computation 
char inData[MAX_STRING_LEN];        // Allocate some space for the string
char inChar = -1;                   // Where to store the character read
byte index  = 0;                    // Index into array for store the char
char IOT[6] = "";              //
char Live[5] = "Live";              //
char GetConfig[5] = "GetC";         //
char GetValues[5] = "GetV";         //
char SetVar[5]    = "SetV";         //
char EndSend[3]   = "*E";           //
//=========================================================================
// PROJECT ID: 
//=========================================================================
// INCOMING OUTGOING GAUGE VARIABLE SETTING 
//=========================================================================

//=========================================================================
// SETUP
//=========================================================================
void setup()
{
  Serial.begin( 57600 );
  Serial.println( F("Dataino|") );
}
//=========================================================================
// LOOP
//=========================================================================
void loop()
{
  if (stringComplete) 
  {
    // reset Value
    stringComplete = false;
    split_value(inData);
    // Clear inData Array
    for(int i=0 ; i < MAX_STRING_LEN ; i++ ) {
      inData[i] = 0;
    }// End For
  }
 //================================================
 // it's time to do something
 //================================================
 if ( millis() > Timer ) {
   Timer = millis();
 }

}
//=========================================================================
/*
 SerialEvent occurs whenever a new data comes in the
 hardware serial RX.  This routine is run between each
 time loop() runs, so using delay inside loop can delay
 response.  Multiple bytes of data may be available.
 */
//=========================================================================
//
//=========================================================================
void serialEvent() {
  while ( Serial.available() ) {
    //---------------------------------------------------------------------
    inChar = Serial.read();       // Read a character
    int charx = char(inChar);
    //---------------------------------------------------------------------
    if ( (index == 0) && ( charx < 32 ) )
    {
      Serial.println(F(">"));
    }
    else
    {
      //-------------------------------------------------------------------
      inData[index] = inChar;         // Store it
      // if the incoming character is a newline, set a flag
      // so the main loop can do something about it:
      //-------------------------------------------------------------------
      if (inChar == '\n'){
        inData[index] = '\0';         // Null terminate the string
        stringComplete = true;
        //-----------------------------------------------------------------
      }
      else
      {
        //-----------------------------------------------------------------
        index++;                      // Increment where to write next
        //-----------------------------------------------------------------
      }
    }
  }
}
//=========================================================================
//  SPLIT FUNCTION
//=========================================================================
void split_value(char* string)
{
  //-----------------------------------------------------------------------
  char *str;
  char *p;
  //-----------------------------------------------------------------------
  strncpy(stringBuffer, string, MAX_STRING_LEN);      // copy source string
  //-----------------------------------------------------------------------
  // split using comma loop while str is not null get subsequent tokens
  //-----------------------------------------------------------------------
  for( str = strtok_r(stringBuffer,";",&p);str;str=strtok_r(NULL,";",&p))
  {
    //---------------------------------------------------------------------
    // Arduino is OK ?
    //---------------------------------------------------------------------
    if( Comp(str, Live) == 0 ){
      Serial.println(F("Dataino|"));
    }
    //---------------------------------------------------------------------
    // GET MONITOR CONFIG
    //---------------------------------------------------------------------
    if( Comp(str, GetConfig) == 0 ){
      Serial.print( F( "IOT;|" ) );
      Serial.print( F( "PJT;|" ) );
      Serial.print( F( "VER;001|" ) );
      //==========================================================
      //==========================================================
      Serial.println( F( "END|" ) );
    } // END if
    //---------------------------------------------------------------------
    // Get Values  
    //---------------------------------------------------------------------
    if( Comp(str, GetValues) == 0 ){
      //==========================================================
    } //END if
    //
    //---------------------------------------------------------------------
    // Set Value  
    //---------------------------------------------------------------------
    // Single Value format SetV;[GaugeId];[value];*E
    // SetV;3578;1;*E
    // Multi Values format SetV;[GaugeId];[value];[value];[value];*E
    //---------------------------------------------------------------------
    // End Value
    //---------------------------------------------------------------------
    if( Comp(str, EndSend) == 0 )
    {
      VAL_IN = false;
      VAR_IN = false;
    }
    //---------------------------------------------------------------------
    // Value on Recive
    //---------------------------------------------------------------------
    if ( VAR_IN == false && VAL_IN == true )
    {
      switch ( valId ) {

      default:
        Serial.println(F("Variable UNKNOW"));
      }
    }
  //---------------------------------------------------------------------
  // RECIVE ID VAR
  //---------------------------------------------------------------------
  if ( VAR_IN == true && VAL_IN == false )
  {
    valId  = atoi(str);
    VAR_IN = false;
    VAL_IN = true;
  }

    //---------------------------------------------------------------------
    // Variable Name do not exist
    //---------------------------------------------------------------------
    if( VAR_IN == true && VAL_IN == false )
    {
      valId =  0;
      VAR_IN = false;
      VAL_IN = true;
    }
    //---------------------------------------------------------------------
    // Variable On Recive
    //---------------------------------------------------------------------
    if( Comp(str, SetVar) == 0 && VAR_IN == false && VAL_IN == false ){
      VAR_IN = true;
      VAL_IN = false;
    } //END if
    //---------------------------------------------------------------------
  } // END for// END void
//=========================================================================
// Compare Value
//=========================================================================
char Comp(char* inData, char* This){
  index = 0;
  if(strcmp(inData,This)  == 0) {
    return(0);
  } else {
    return(1);
  }
}
//=========================================================================
// SEND VALUE To MONITOR
//=========================================================================
void SendValue(int SendVar)
{
  //***********************************************************************
  //* SEND VALUE TO MONITOR:
  //***********************************************************************
 char OutBuffer[MAX_STRING_LEN];  // static buffer for computation
  sprintf( OutBuffer, "V;%s;%i;", IOT, SendVar );
  Serial.print( OutBuffer );
  switch ( SendVar )
  {

  }
  Serial.println( F( "|" ) );
}

//***********************************************************************
X

Login




X

Register

captcha

X

Password Reset