Skip to main content
change title, add tag
Link

Unable to find bug strtok problem while parsing String

edited tags
Link
jfpoilpret
  • 9.2k
  • 7
  • 38
  • 54
deleted 3050 characters in body
Source Link
MICRO
  • 500
  • 1
  • 8
  • 20
 #include <ESP8266WiFi.h>
    #include <string.h>



const char* ssid     = "234";
const char* password = "23445";

const char* host = "data.sparkfun.com";
const char* publicKey = "9JvZL2Ym95fVb85nZdjq";
const char* privateKey = "xzGyJ6BwpEIVPnA1qgWM";

#define MAX_STRING_LEN  20
/*
  http://data.sparkfun.com/input/[publicKey]?private_key=[privateKey]&cardnumber=[value]&currentcount=[value]&humidity=[value]&temp=[value]&totalcount=[value]

  http://data.sparkfun.com/input/9JvZL2Ym95fVb85nZdjq?private_key=xzGyJ6BwpEIVPnA1qgWM&cardnumber=15.67&currentcount=15.90&humidity=18.05&temp=23.35&totalcount=5.53

*/

String inputString = "";
boolean stringComplete = false, StartCapturing = false;

char inData[50];
char inChar, IncomingWeight;
char IncomingString[50];
const int httpPort = 80;

char *i, *k,*p;
String CardID;
int Temprature, Humidity, TC, CC;
byte SendData = 0;
//char s[2] = ",";
char delimiters[] = "*,#";
char* valPosition;

WiFiClient client;


void setup()
{
  Serial.begin(9600);

  Serial.print("ESP8266 Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}

void loop()
{
  serialEvent();

  if (stringComplete)
  {
    inputString.toCharArray(IncomingString, 50);
    Serial.println();
    Serial.println(IncomingString);

    i = strstr(IncomingString, "CR");
    {
      if (i)
      {
        p = i+2;
        CardID = strtok(p, ",");
        
        Serial.print("Card Number :");
        Serial.print(CardID);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "Temp");
    {
      if (i)
      {
        Temprature = strtoul(i + 4 , NULL, 10);
        Serial.print("Temprature :");
        Serial.print(Temprature);
        Serial.println();
      }
    }


    i = strstr(IncomingString, "Humidity");
    {
      if (i)
      {
        Humidity = strtoul(i + 8 , NULL, 10);
        Serial.print("Humidity :");
        Serial.print(Humidity);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "TC");
    {
      if (i)
      {
        TC = strtoul(i + 2 , NULL, 10);
        Serial.print("Total Count :");
        Serial.print(TC);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "CC");
    {
      if (i)
      {
        CC = strtoul(i + 2 , NULL, 10);
        Serial.print("Current Count :");
        Serial.print(CC);
        Serial.println();
        SendData = 1;
      }
    }

    stringComplete = false;
    inputString = "";
    delay(10);
  }


  if (SendData)
  {
    Serial.print("connecting to ");
    Serial.println(host);

    if (!client.connect(host, httpPort))
    {
      Serial.println("connection failed");
      return;
    }

    // We now create a URI for the request
    String url = "/input/";
    url += publicKey;
    url += "?private_key=";
    url += privateKey;
    url += "&cardnumber=";
    url += CardID;
    url += "&currentcount=";
    url += CC;
    url += "&humidity=";
    url += Humidity;
    url += "&temp=";
    url += Temprature;
    // url += "&totalcount=";
    // url += TC;

    Serial.print("Requesting URL: ");
    Serial.println(url);

    // This will send the request to the server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
    delay(10);

    // Read all the lines of the reply from server and print them to Serial
    while (client.available())
    {
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }

    Serial.println();
    Serial.println("closing connection");

    SendData = 0;
  }
}

void serialEvent()
{
  while (Serial.available())
  {
    char inChar = (char)Serial.read();

    if (inChar == '*')
    {
      StartCapturing = true;
    }

    if (StartCapturing)
    {
      inputString += inChar;
    }

    if (inChar == '#')
    {
      stringComplete = true;
      StartCapturing = false;
    }
  }
}
 #include <ESP8266WiFi.h>
    #include <string.h>



const char* ssid     = "234";
const char* password = "23445";

const char* host = "data.sparkfun.com";
const char* publicKey = "9JvZL2Ym95fVb85nZdjq";
const char* privateKey = "xzGyJ6BwpEIVPnA1qgWM";

#define MAX_STRING_LEN  20
/*
  http://data.sparkfun.com/input/[publicKey]?private_key=[privateKey]&cardnumber=[value]&currentcount=[value]&humidity=[value]&temp=[value]&totalcount=[value]

  http://data.sparkfun.com/input/9JvZL2Ym95fVb85nZdjq?private_key=xzGyJ6BwpEIVPnA1qgWM&cardnumber=15.67&currentcount=15.90&humidity=18.05&temp=23.35&totalcount=5.53

*/

String inputString = "";
boolean stringComplete = false, StartCapturing = false;

char inData[50];
char inChar, IncomingWeight;
char IncomingString[50];
const int httpPort = 80;

char *i, *k,*p;
String CardID;
int Temprature, Humidity, TC, CC;
byte SendData = 0;
//char s[2] = ",";
char delimiters[] = "*,#";
char* valPosition;

WiFiClient client;


void setup()
{
  Serial.begin(9600);

  Serial.print("ESP8266 Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}

void loop()
{
  serialEvent();

  if (stringComplete)
  {
    inputString.toCharArray(IncomingString, 50);
    Serial.println();
    Serial.println(IncomingString);

    i = strstr(IncomingString, "CR");
    {
      if (i)
      {
        p = i+2;
        CardID = strtok(p, ",");
        
        Serial.print("Card Number :");
        Serial.print(CardID);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "Temp");
    {
      if (i)
      {
        Temprature = strtoul(i + 4 , NULL, 10);
        Serial.print("Temprature :");
        Serial.print(Temprature);
        Serial.println();
      }
    }


    i = strstr(IncomingString, "Humidity");
    {
      if (i)
      {
        Humidity = strtoul(i + 8 , NULL, 10);
        Serial.print("Humidity :");
        Serial.print(Humidity);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "TC");
    {
      if (i)
      {
        TC = strtoul(i + 2 , NULL, 10);
        Serial.print("Total Count :");
        Serial.print(TC);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "CC");
    {
      if (i)
      {
        CC = strtoul(i + 2 , NULL, 10);
        Serial.print("Current Count :");
        Serial.print(CC);
        Serial.println();
        SendData = 1;
      }
    }

    stringComplete = false;
    inputString = "";
    delay(10);
  }


  if (SendData)
  {
    Serial.print("connecting to ");
    Serial.println(host);

    if (!client.connect(host, httpPort))
    {
      Serial.println("connection failed");
      return;
    }

    // We now create a URI for the request
    String url = "/input/";
    url += publicKey;
    url += "?private_key=";
    url += privateKey;
    url += "&cardnumber=";
    url += CardID;
    url += "&currentcount=";
    url += CC;
    url += "&humidity=";
    url += Humidity;
    url += "&temp=";
    url += Temprature;
    // url += "&totalcount=";
    // url += TC;

    Serial.print("Requesting URL: ");
    Serial.println(url);

    // This will send the request to the server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
    delay(10);

    // Read all the lines of the reply from server and print them to Serial
    while (client.available())
    {
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }

    Serial.println();
    Serial.println("closing connection");

    SendData = 0;
  }
}

void serialEvent()
{
  while (Serial.available())
  {
    char inChar = (char)Serial.read();

    if (inChar == '*')
    {
      StartCapturing = true;
    }

    if (StartCapturing)
    {
      inputString += inChar;
    }

    if (inChar == '#')
    {
      stringComplete = true;
      StartCapturing = false;
    }
  }
}
String inputString = "";
boolean stringComplete = false, StartCapturing = false;

char inData[50];
char inChar, IncomingWeight;
char IncomingString[50];
const int httpPort = 80;

char *i, *k,*p;
String CardID;
int Temprature, Humidity, TC, CC;
byte SendData = 0;


void setup()
{
  Serial.begin(9600);
}

void loop()
{
  serialEvent();

  if (stringComplete)
  {
    inputString.toCharArray(IncomingString, 50);
    Serial.println();
    Serial.println(IncomingString);

    i = strstr(IncomingString, "CR");
    {
      if (i)
      {
        p = i+2;
        CardID = strtok(p, ",");
        
        Serial.print("Card Number :");
        Serial.print(CardID);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "Temp");
    {
      if (i)
      {
        Temprature = strtoul(i + 4 , NULL, 10);
        Serial.print("Temprature :");
        Serial.print(Temprature);
        Serial.println();
      }
    }


    i = strstr(IncomingString, "Humidity");
    {
      if (i)
      {
        Humidity = strtoul(i + 8 , NULL, 10);
        Serial.print("Humidity :");
        Serial.print(Humidity);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "TC");
    {
      if (i)
      {
        TC = strtoul(i + 2 , NULL, 10);
        Serial.print("Total Count :");
        Serial.print(TC);
        Serial.println();
      }
    }

    i = strstr(IncomingString, "CC");
    {
      if (i)
      {
        CC = strtoul(i + 2 , NULL, 10);
        Serial.print("Current Count :");
        Serial.print(CC);
        Serial.println();
        
      }
    }

    stringComplete = false;
    inputString = "";
    delay(10);
  }
Source Link
MICRO
  • 500
  • 1
  • 8
  • 20
Loading