I am using a GSM with CAN bus shield to send parameters but some how the GSM doesnt want to send the 2 messages plz help
#include <Mechanic.h>
#include <SoftwareSerial.h>
ObdInterface obd;
ObdMessage msg;
#include "SIM900.h"
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
int flag = 0 ;
char *z;
char c ;
int d,e,f,g;
void setup() {
Serial.begin(9600);
while (!Serial);
obd.setSlow(false);
obd.setExtended(false);
obd.setDebug(false);
obd.begin();
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
started=true;
}
}
void loop() {
float rpm = 0, temp = 0;
char buffer[64];
int count = 0;
Serial.print("ok1");
obd.getPidAsFloat(0x0c, 0.0f, 16383.75f, rpm);
obd.getPidAsFloat(0x05, -40.0f, 215.0f, temp);
char x[100] ;
char l[100] ;
float a = rpm;
int a1 = (int)a;
int a2 = (int) ((a-a1)*100);
float b = temp;
int b1 = (int)b;
int b2 = (int) ((b-b1)*100);
sprintf(x, "RPM %d.%d Temp %d.%d ",a1,a2,b1,b2);
char *p = x;
if (sms.SendSMS("01002620719",p));
delay(5000);
if (obd.getMultiframePid(0x03, -1, buffer, count)) {
for (int i = 0; i < count; i += 2) {
byte first = (byte)buffer;
byte second = (byte)buffer[i + 1];
/*
- The two highest bits encode the subsystem.
*/
switch(first >> 6) {
case 0: c='P'; break;
case 1: c='C'; break;
case 2: c='B'; break;
case 3: c='U'; break;
}
d = ((first >> 4) & 0x03, DEC);
e =(first & 0x0f, HEX);
f =(second >> 4, HEX);
g =(second & 0x0f, HEX);
}
}
sprintf(l, "DTCs %d %c%d%d%d%d ",count,c,d,e,f,g);
char*h=l;
if (sms.SendSMS("01002620719",h));
}