Понимаю, лень в таком возиться, а мне самому приходится. Опыта чайника хватило исправить ошибку и совместить их:
Код:
#include "SIM900.h"
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include "inetGSM.h"
InetGSM inet;
/*
This sample sketch demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/
static const int RXPin = 5, TXPin = 6;
static const uint32_t GPSBaud = 9600;
double gpslat;
String double2string(double n, int ndec){
String r = "";
int v = n;
r += v; // whole number part
r += '.'; // decimal point
int i;
for (i=0;i<ndec;i++) {
// iterate through each decimal digit for 0..ndec
n -= v;
n *= 10;
v = n;
r += v;
}
return r;
};
String ltd, lnd;
char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
void setup()
{digitalWrite(9, HIGH);
Serial.begin(9600);
ss.begin(GPSBaud);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
}
void loop()
{
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo()
{
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
// ltd = (double2string (gps.location.lat(), 6));
// lnd = (double2string (gps.location.lng(), 6));
Serial.println(ltd);
Serial.println(lnd);
ltd = (double2string (44.391922, 5));
lnd = (double2string (33.794126, 5));
//Read for new byte on serial hardware,
//and write them on NewSoftSerial.
// serialhwread();
//Read for new byte on NewSoftSerial.
// serialswread();
InetGSM inet;
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else
digitalWrite(9, HIGH);
Serial.println("\nstatus=IDLE");
if(started){
//GPRS attach, put in order APN, username and password.
//If no needed auth let them blank.
if (inet.attachGPRS("internet.beeline.ru", "", ""))
Serial.println("status=ATTACHED");
else
digitalWrite(9, HIGH);
Serial.println("status=ERROR");
delay(1000);
//Read IP address.
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
//Read until serial buffer is emapty.
gsm.WhileSimpleRead();
String str = "{\"title\":\"temp31\", \"temperature\": \"";
str += 5;
str += "\",\"latitude\":\"";
str += 55;
str += "\",\"longitude\":\"";
str += 44;
str += "\", \"device_id\":\"";
str += 5;
str += "\"}";
int len = str.length()+1;
unsigned char* buf = new unsigned char[len];
str.getBytes(buf, len, 0);
Serial.println((const char*)buf);
numdata=inet.httpPOST("m-ark.kps-dev.com", 80, "/temperature ", (const char*)buf, msg, 50);
delete buf;
//TCP Client GET, send a GET request to the server and
//save the reply.
// numdata=inet.httpPOST("dev.com", 80, "/temperature ", "{\"title\":\"temp38\", \"temperature\": \"25\", \"latitude\":\"55.407749\",\"longitude\":\"38.866600\", \"device_id\":\"28\"}",msg,50);
//Print the results.
Serial.println("\nNumber of data received:");
Serial.println(numdata);
Serial.println("\nData received:");
Serial.println(msg);
Serial.begin(9600);
ss.begin(GPSBaud);
digitalWrite(9, HIGH);
}
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
}
else
{
Serial.print(F("INVALID"));
}
}