RSS Feed sketch not using LCD's second line

So I am following this instructable: http://www.instructables.com/id/Wiring-up-the-LCD-and-the-LED/?ALLSTEPS
And the data from the RSS feed come in fine but when it sends it to the display characters get chopped off and don't carry over to the second line of my 2x16 screen. I have checked the circuit and the python script and everything is fine there but I haven't used ardunio much before so I'm not sure about the code running on it. Here is an example of what happens
RSS Feed text: World leaders meet in Geneva today to discuss important events.
What actually outputs


|World leaders meet in |
|________________|


|to discuss important |
|________________|

How do I fix this? Is it the library, because I don't think I correctly uploaded the LiquidCrystal440 library.

The second line of these displays is not concurrent with the first.

Simple as that.

When you want to write something to the second line, you have to use the set cursor command to the second line.

Paul__B:
The second line of these displays is not concurrent with the first.

Simple as that.

When you want to write something to the second line, you have to use the set cursor command to the second line.

Ok so I have modified the code a bit, but can't figure out how to split incomingByte into two 16 character sections.
The bit I have modified is

if (charcount <= 30){                                                        // check if charcount is under or equal to 30
                     lcd.print(incomingByte);                     // Print the current byte in the serial
                     charcount = charcount++;                                             // Increment the charcount by 1 yes I know it's awkward
                     }
                   }

And I have changed it to

if (charcount <= 30){                                                        // check if charcount is under or equal to 30
                     lcd.print(incomingByte);                     // Print the current byte in the serial
                     lcd.setCursor(0,1);
                     lcd.print(incomingByte)
                     charcount = charcount++;                                             // Increment the charcount by 1 yes I know it's awkward
                     }
                   }

How do I turn incomingByte into two sections of 16 characters to print out?

Hmmm. Let's see ...

/* text printer demo
 ______________________________________   */

#include  <LiquidCrystal.h>  // import the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int startstring = 0;      // recognition of beginning of new string
int charcount = 0;        // keeps track of total chars on screen
char isdata = 0;

void serialEvent(){
  digitalWrite(13, HIGH);
  isdata = 1;

}
void setup () {

  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
  lcd.begin(16,2);        // initialize the lcd as 20x4 (16,2 for 16x2)
  lcd.home ();            // go home to character 0 on line 0 (1st line)
  lcd.print(" Text Printer   ");  
  lcd.setCursor(0,1);     // character 0 on line 1 (2nd line)
  lcd.print ("   Version 02 ");

  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);  

  lcd.setCursor(0,0);     // Set cursor position to top left corner
  delay(3000);
  //  Serial.println("Hello, Hello");
  isdata = 0;

}  

void loop() {
  char incomingByte = 0;                         // for incoming serial data

  if (isdata)
    //  if (Serial.available() )                     // Just does not work on my system! 
  {                                                  // Check for incoming Serial Data
    digitalWrite(13, HIGH);
    isdata = 0;
    incomingByte = Serial.read();
    if ((incomingByte == '~') && (startstring == 1)) // Check for closing '~' to end printing of serial data      
    {
      startstring = 0;                               // Set the printing to off
      delay(5000);                                   // Wait 5 seconds
      lcd.clear();                                   // Wipe the screen
      charcount = 0;                                 // reset the character count to 0
      lcd.setCursor(0,0);                            // reset the cursor to 0,0
    }

    if (startstring == 1){                           // check if the string has begun if first '~' has been read
      if (charcount <= 30){                          // check if charcount is under or equal to 30
        lcd.print(incomingByte);                     // Print the current byte in the serial
        charcount++;                                 // Increment charcount
      }
    }

    if (charcount == 16){                            // if the charcount is equal to 16 aka end first line
      lcd.setCursor(0,1);                            // set cursor to second line
    }

    if (charcount == 31){                            // if the charcount is equal to 31 aka the screen is full
      delay(500);
      lcd.clear();                                   // clear screen
      lcd.setCursor(0,0);                            // set cursor to 0,0
      lcd.print(incomingByte);                       // continue printing data
      charcount = 1;                                 // set charcount back to 1
    }

    if (incomingByte == '~'){                        // Check if byte is marker ~ to start the printing
      startstring = 1;                               // start printing
    }  
  }
  digitalWrite(13, LOW);
  delay(10);                                         // 10ms delay for stability
}

Does a few weird things, but I will leave you to figure them out I think.

A few corrections ...

/* text printer demo
 ______________________________________   */

#include  <LiquidCrystal.h>  // import the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int startstring = 0;      // recognition of beginning of new string
int charcount = 0;        // keeps track of total chars on screen
char isdata = 0;

void serialEvent(){
  digitalWrite(13, HIGH);
  isdata = 1;

}
void setup () {

  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
  lcd.begin(16,2);        // initialize the lcd as 20x4 (16,2 for 16x2)
  lcd.home ();            // go home to character 0 on line 0 (1st line)
  lcd.print(" Text Printer   ");  
  lcd.setCursor(0,1);     // character 0 on line 1 (2nd line)
  lcd.print ("   Version 02 ");

  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);  

  lcd.setCursor(0,0);     // Set cursor position to top left corner
  delay(3000);
  //  Serial.println("Hello, Hello");
  isdata = 0;

}  

void loop() {
  char incomingByte = 0;                         // for incoming serial data

  if (isdata)
    //  if (Serial.available() )                     // Just does not work on my system! 
  {                                                  // Check for incoming Serial Data
    digitalWrite(13, HIGH);
    isdata = 0;
    incomingByte = Serial.read();
    if ((incomingByte == '~') && (startstring == 1)) // Check for closing '~' to end printing of serial data      
    {
      startstring = 0;                               // Set the printing to off
      delay(5000);                                   // Wait 5 seconds
      lcd.clear();                                   // Wipe the screen
      charcount = 0;                                 // reset the character count to 0
      lcd.setCursor(0,0);                            // reset the cursor to 0,0
    }

    if (startstring == 1){                           // check if the string has begun if first '~' has been read
      if (charcount <= 31){                          // check if charcount is under or equal to 30
        lcd.print(incomingByte);                     // Print the current byte in the serial
        charcount++;                                 // Increment charcount
      }
    }

    if (charcount == 16){                            // if the charcount is equal to 16 aka end first line
      lcd.setCursor(0,1);                            // set cursor to second line
    }

    if (charcount == 32){                            // if the charcount is equal to 31 aka the screen is full
      delay(500);
      lcd.clear();                                   // clear screen
      lcd.setCursor(0,0);                            // set cursor to 0,0
      lcd.print(incomingByte);                       // continue printing data
      charcount = 1;                                 // set charcount back to 1
    }

    if (incomingByte == '~'){                        // Check if byte is marker ~ to start the printing
      startstring = 1;                               // start printing
    }  
  }
  digitalWrite(13, LOW);
  delay(10);                                         // 10ms delay for stability
}

Fiddling the numbers 30 - 31 - 32 to try and make sense of it.

Still some peculiar behaviour - perhaps it might work a little more appropriately with your Python driving code but it looks to me like pretty scattered ("spaghetti") - poorly planned - code overall. I might have another try at a re-write in due course.