Pages: [1]   Go Down
Author Topic: combining content of two character arrays  (Read 812 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

I'm developing a sketch to randomly select from a pool of messages and then send it as a tweet.

I've the basics all working (ethernet shield, saving messages to PROGMEM, randomly retrieving one of them, tweeting it), but in order to avoid Twitter rejecting duplicate messages I'd like to add an incrementor to the beginning of the message that gets tweeted.

I've managed to get the incrementor incrementing and then put the resulting int into a character array - which then gets successfully tweeted - but I'm struggling to get the bit where I need to add the message into the tweet content working.

Here's a stripped down version of the code I'm currently arrived at:

Code:

#include <SPI.h> // needed in Arduino 0019 or later
#include <Ethernet.h>
#include <Twitter.h>
#include <avr/pgmspace.h>
#include <SoftwareSerial.h>

int copiercount = 0;
//[message contents saved to PROGMEM here]
//[ lookup table here]

char buffer[140];    // make sure this is large enough for the largest string it must hold

//[ethernet settings etc]

// Message to post
char msg[145] ;

void setup()
{
//[communications set up etc ]
 
}

   void sendtweet(){
// [code to send tweet here  ]
   }

void loop()
{
    copiercount = copiercount + 1;
    Serial.println("Select from copier pool ");

    strcpy_P(buffer, (char*)pgm_read_word(&(copier_table[randNumber]))); // Necessary casts and dereferencing, just copy.
    Serial.println( buffer );
   
Serial.print("copier count: ");
Serial.println( copiercount );

String stringOne = "> ";
stringOne += copiercount;
char counter[5];
stringOne.toCharArray(counter, 5) ;

    msg[0] = counter[0];
    msg[1] = counter[1];
    msg[2] = counter[2];
    msg[3] = counter[3];
    msg[4] = counter[4];

    for (int j = 5; j < 143; j++){
    msg[j] = buffer[j-5];}
   
    Serial.println( msg );
   
    sendtweet();

  Serial.println();
 
} //end loop



This is outputting a series of tweets with the content "> 1", "> 2" etc, but not adding in the main body of the message afterwards.

I'd be grateful if someone could explain to me where I'm going wrong and/or the correct way to combine the two segments of the tweet content. My programming knowledge is limited, so please don't assume much in the way of prior knowledge!

Thanks.
Logged

UK
Offline Offline
Faraday Member
**
Karma: 92
Posts: 3969
Where is your SSCCE?!?!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

First, avoid the String class like the plague.

You are doing things there that, while fine on a computer with plenty of memory, on a microcontroller are the spawn of satan and will cause untold problems with memory fragmentation.

You should be using char arrays for all your text.

Then, investigate the "sprintf()" function - that will allow you to format a complete message, including integer inclusions, etc, into a char array.
Logged

Why not visit my eBay shop? http://stores.ebay.co.uk/Majenko-Technologies
Replacement for the Arduino IDE: UECIDE - Proper serial terminal, graphing facilities, plugins, overhauled internals.
Java isn't bad in itself, but it has enabled morons to write programs.

0
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A belated thanks for your reply, majenko.

sprintf() investigated and I think I've got a feel for how it works now.
...unfortunately I'm now in a different city to the Ethernet Shield, but hopefully I'll get a chance to rework and test the code soon!

Thanks,
nikki
Logged

Pages: [1]   Go Up
Jump to: