Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. /*********************************************************
  6.   Global variables + Defines
  7. **********************************************************/
  8.  
  9. typedef struct {
  10.     int Dn;
  11.     int Dm;
  12.     int Dx;
  13.     float Sn;
  14.     float Sm;
  15.     float Sx;
  16.     float Ta;
  17.     float Ua;
  18.     float Pa;
  19.     float Rc;
  20.     float Sr;
  21.     int Lux;
  22.     int T;
  23.     float La;
  24.     float Lo;
  25. } wts;
  26.  
  27. wts weather_packet;
  28.  
  29. /*********************************************************
  30.   Functions
  31. **********************************************************/
  32.  
  33. void printWTSvalues(void)
  34. {
  35.     Serial.print("Dn: ");
  36.     Serial.println(weather_packet.Dn);
  37.  
  38.     Serial.print("Dm: ");
  39.     Serial.println(weather_packet.Dm);
  40.  
  41.     Serial.print("Dx: ");
  42.     Serial.println(weather_packet.Dx);
  43.  
  44.     Serial.print("Sn: ");
  45.     Serial.println(weather_packet.Sn);
  46.  
  47.     Serial.print("Sm: ");
  48.     Serial.println(weather_packet.Sm);
  49.  
  50.     Serial.print("Sx: ");
  51.     Serial.println(weather_packet.Sx);
  52.  
  53.     Serial.print("Ta: ");
  54.     Serial.println(weather_packet.Ta);
  55.  
  56.     Serial.print("Ua: ");
  57.     Serial.println(weather_packet.Ua);
  58.  
  59.     Serial.print("Pa: ");
  60.     Serial.println(weather_packet.Pa);
  61.  
  62.     Serial.print("Rc: ");
  63.     Serial.println(weather_packet.Rc);
  64.  
  65.     Serial.print("Sr: ");
  66.     Serial.println(weather_packet.Sr);
  67.  
  68.     Serial.print("Lux: ");
  69.     Serial.println(weather_packet.Lux);
  70.  
  71.     Serial.print("T: ");
  72.     Serial.println(weather_packet.T);
  73.  
  74.     Serial.print("La: ");
  75.     Serial.println(weather_packet.La);
  76.  
  77.     Serial.print("Lo: ");
  78.     Serial.println(weather_packet.Lo);
  79. }
  80.  
  81. void getWeatherData(void)
  82. {
  83.     char str[512];
  84.     memset(str, 0, 512);
  85.     char *field;
  86.     char *pch;
  87.  
  88.     // Send R0 command and dump response into str
  89.     Serial1.print("0R0\r\n");
  90.     Serial1.readBytesUntil("\n", str, 512);
  91.  
  92.     Serial.println(str);
  93.  
  94.     field = strtok(str, ",");
  95.     pch = strchr(field, '=');
  96.     ++pch;
  97.     weather_packet.Dn = atoi(pch);
  98.  
  99.     field = strtok(nullptr, ",");
  100.     weather_packet.Dm = atoi(field);
  101.  
  102.     field = strtok(nullptr, ",");
  103.     weather_packet.Dx = atoi(field);
  104.    
  105.     field = strtok(str, ",");
  106.     weather_packet.Sn = atof(field);
  107.  
  108.     field = strtok(nullptr, ",");
  109.     weather_packet.Sm = atof(field);
  110.  
  111.     field = strtok(nullptr, ",");
  112.     weather_packet.Sx = atof(field);
  113.    
  114.     field = strtok(nullptr, ",");
  115.     weather_packet.Ta = atof(field);  
  116.    
  117.     field = strtok(nullptr, ",");
  118.     weather_packet.Ua = atof(field);  
  119.    
  120.     field = strtok(nullptr, ",");
  121.     weather_packet.Pa = atof(field);
  122.    
  123.     field = strtok(nullptr, ",");
  124.     weather_packet.Rc = atof(field);  
  125.    
  126.     field = strtok(nullptr, ",");
  127.     weather_packet.Sr = atof(field);
  128.    
  129.     field = strtok(nullptr, ",");
  130.     weather_packet.Lux = atoi(field);
  131.    
  132.     field = strtok(nullptr, ",");
  133.     weather_packet.T = atoi(field);
  134.  
  135.     field = strtok(nullptr, ",");
  136.     weather_packet.La = atof(field);  
  137.    
  138.     field = strtok(nullptr, ",");
  139.     weather_packet.Lo = atof(field);  
  140.  
  141.     printWTSvalues();
  142. }
  143.  
  144. /*********************************************************
  145.   Init
  146. **********************************************************/
  147.  
  148. void setup()
  149. {
  150.     Serial.begin(19200);
  151.     Serial1.begin(19200);
  152.     delay(2000);
  153. }
  154.  
  155. /*********************************************************
  156.   Loop
  157. **********************************************************/
  158.  
  159. void loop()
  160. {
  161.     getWeatherData();
  162.     delay(5000);
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement