Go Down

Topic: How Can I merge char variable (Read 2500 times) previous topic - next topic

pierrot10

Good evening all,

I need to merge some char into a another.

Here are my declaration
Code: [Select]
char coords[100];
char lon[15];
char lat[15];
char alt[15];
char time[20];
char vel[15];

At the end, I would like to have this

Code: [Select]
coords = "lat="+lat+"&long="+lon+"&alt="+alt+"&speed=&course="+val+"&date=2013-04-25&time="+time+";

By the way, the time is returning with in this format
Code: [Select]

20130615220230.000


How can I get it a human readable?

Cheers
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

AWOL

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

pierrot10

I am not sure, if it works

this return me only the time value
Code: [Select]

strcpy (coords,"lat=");
      strcpy (coords,lat);
      strcpy (coords,"&long=");
      strcpy (coords,lon);
      strcpy (coords,"&alt=");
      strcpy (coords,alt);
      strcpy (coords,"&speed=");
      strcpy (coords,"");
      strcpy (coords,"&course=");
      strcpy (coords,vel);
      strcpy (coords,"&date=");
      strcpy (coords,"2013-06-16");
      strcpy (coords,"&time=");
      strcpy (coords,time);

Serial.println(coords);
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

j514

#3
Jun 16, 2013, 12:47 am Last Edit: Jun 16, 2013, 12:49 am by j514 Reason: 1
try this:

Code: [Select]

char coords[50];

snprintf(coords,50,"lat=%s&long=%s&alt=%s&speed=%s&course=%s&date=%s&time=%s",lat,lon,alt,speed,vel,date,time);


edit: variable name
a][+ ascii express, 110/300 novation cat, xmodem

acaine

Or, use the String class with operator+, such as

String message = String("lat") + String(lat)  ...and so on

pierrot10

Si when I uncomment this
Code: [Select]
char coords[100];
//snprintf(coords,100,"lat=%s&long=%s&alt=%s&speed=%s&course=%s&date=%s&time=%s",lat,lon,alt,"",vel,"2013-06-22",time);

the program free. So stop at the begining
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Arrch


pierrot10

The terminal show the progress but it stop at the 5ft line. Nothing happen. When I comment the line, the code/terminal continue in his right process
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Arrch


The terminal show the progress but it stop at the 5ft line. Nothing happen. When I comment the line, the code/terminal continue in his right process


What terminal? What 5ft. line?

pierrot10

This is when is commented
Code: [Select]

----------------------
Starting SIM908.
----------------------
Please wait...
DB:ELSE
DB:ELSE
DB:ELSE
DB:CORRECT BR
Turn on

status=READY

Attaching GSM
--------------
DB:ALREADY HAVE AN IP
status=ATTACHED
GSM RAEDY TO GO!

Attaching GPS
--------------
status=GPS READY TO GO!
sms => Send SMS
data => Send data to the server
get => Get data from server
gps => Get GPS coords
test => Test system



This is when it uncommented (not good)
Code: [Select]
----------------------
Starting SIM908.
----------------------
Please wait...
DB:ELSE
DB:ELSE
DB:ELSE
DB:CORRECT BR
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

pierrot10

To resume,
I have this
Code: [Select]
gps.getPar(lon,lat,alt,time,vel);
and it should be in the coords variable of this
Code: [Select]
inet.httpPOST(host, port_post, path_post, coords , "Result", 1000);
But I hav to add URL varaiable like this
Code: [Select]
coords = "lat="+lat+"&long="+lon+"&alt="+alt+"&speed=&course="+val+"&date=2013-04-25&time="+time+";

:smiley-slim: :)
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Arrch

And how are we supposed to know what's wrong when you've only posted no more than 4 lines of your code?

j514


Si when I uncomment this
Code: [Select]
char coords[100];
//snprintf(coords,100,"lat=%s&long=%s&alt=%s&speed=%s&course=%s&date=%s&time=%s",lat,lon,alt,"",vel,"2013-06-22",time);

the program free. So stop at the begining


"" is invalid, use a variable.  Here, I've done the work for you.

Code: [Select]
void setup()
{
  char coords[100];
  char lon[15];
  char lat[15];
  char alt[15];
  char vel[15]; // speed
  char crs[15]; // course
  char date[20]; 
  char time[20];
 
    // make sure each variable is initialized or sprintf will return junk
    strcpy(lat,"99.9");
    strcpy(lon,"11.1");
    strcpy(alt,"22");
    strcpy(vel,"55mph");
    strcpy(crs,"2.5NE");
    strcpy(time,"21:01:01");
    strcpy(date,"6/15/2013");
    snprintf(coords,100,"lat=%s&long=%s&alt=%s&speed=%s&course=%s&date=%s&time=%s",lat,lon,alt,vel,crs,date,time);
   
    Serial.begin(9600);
    Serial.println(coords);
    Serial.end();
}

void loop() {}
a][+ ascii express, 110/300 novation cat, xmodem

pierrot10

#13
Jun 16, 2013, 07:55 am Last Edit: Jun 16, 2013, 08:24 am by pierrot10 Reason: 1
Hello All
thank for your answers and help, but I am afraid it did not solve my issue.

I am sorry if I have been not clear enough.

Here is a resume

Code: [Select]

// GPS
char coords[100];
char lon[15];
char lat[15];
char alt[15];
char time[20];
char vel[15];
char msg1[5];
char msg2[5];


This collect the GPS coords
Code: [Select]
gps.getPar(lon,lat,alt,time,vel);
Then from now, I have the longitude (lon) the latitude (lat) etc. No worries for sppeed and course, I will see it later.

I have to send the cords to a remote server and for this I use this function
Code: [Select]

inet.httpPOST(host, port_post, path_post, coords , "Result", 1000);
      delay(10000);

Coords is the char variable which must contain the value.

If I code
Code: [Select]
coords = "lat="+lat+"&long="+lon+"&alt="+alt+"&vel="+val+"&time="+time;
inet.httpPOST(host, port_post, path_post, coords , "Result", 1000);


This works fine, but now I have to replace the "10.000", "20.000" etc by the value provided by the GSP.
So I tryied this

Code: [Select]
coords = "lat="+lat+"&long=20.0000&alt=30.000&speed=&vel=40.000&time=20130609062400.097;
but this does not work.
I have this error message
Quote
Invalid operands of types 'const char[5]' and 'char[15]' to binary 'operator' +


That's it
:)
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

pierrot10

Ok, I solved my problem this way
Code: [Select]

  gps.getPar(lon,lat,alt,time,vel);
     
      strcpy (coords,"lat=");
      strcat (coords,lat);
     
      strcat (coords,"&long=");
      strcat (coords,lon);
     
      strcat (coords,"&alt=");
      strcat (coords,alt);
     
      strcat (coords,"&vel=");
      strcat (coords,vel);
     
      strcat (coords,"&time=");
      strcat (coords,time);


Now I have a last question.

time diaply this : 20130609062400.097

how can I have it in a readable format?

many thank
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Go Up