Serial Communication problem: TouchShield Slide <-> Arduino Uno

Hello,

I'm trying to setup a 2-way serial communication between 2 devices:

TouchShield Slide (from Liquidware) using HardwareSerial from/to an Arduino UNO using AFSoftSerial library.

I've setup a test example to see how it works, but I can only communicate from Arduino to TouchShield and not the other way.
In short: When sending data via serial from my TouchShield to the Arduino Uno, it seems to reboot.

This is what I can observe:

When rebooting Arduino, the number "3" is printed on the screen as expected, so that way seems to work.
When pressing the 'OK' button on the TouchShield, it should send an 'A' to the Arduino. But what happens is that in my Serial console on the computer is that I see Arduino Boot1, Arduino Boot2 again. So it seems that the device reboots.
Any idea what could be wrong?

This is my code on the Arduino Uno:

/////////////////////////////////////////
//          Code for Arduino           //
///////////////////////////////////////// 

#include <AFSoftSerial.h>
#include <SoftwareSerial.h>

#define RX_PIN  3 
#define TX_PIN  2 

AFSoftSerial touchSerial =  AFSoftSerial(RX_PIN, TX_PIN);

// Globals
long randNumber;

void setup() {
  touchSerial.begin(9600);
  Serial.begin(9600);
  Serial.println("Arduino Boot1");
  delay(80);
  Serial.println("Arduino Boot2");
  delay(80);
  touchSerial.print(3);
 
}

void loop() {
  if(touchSerial.available())
  {
    char c = (char)touchSerial.read();
    if (c == 'A')
    {
      Serial.print("Got A");
    }
  }
}

This my code on the TouchShield Slide:

/******************************************
 * ButtonDialog
 *      A simple button dialog example.
 *
 *      By Christopher Ladden @ liquidware.com
 *
 *      For use with the TouchShield from liquidware
 *      TouchShield Slide : http://www.liquidware.com/shop/show/TSL/TouchShield+Slide
 *      TouchShield Stealth : http://www.liquidware.com/shop/show/TS/TouchShield+Stealth
 *
 ******************************************/
#include <TButton.h>

TButton ok = TButton("Ok",20,80);
TButton cancel = TButton("Cancel",80,80);
unsigned int Xstore;
unsigned int Ystore;

void setup() {
  background(0,0,0); 
  stroke(255,255,255); 
  fill(0,0,0); 
   
  Serial.begin(9600);
  delay(100);
  
  ok.Paint();
  cancel.Paint();
}


void loop() {

  if (ok.GetTouch()) {
    stroke(255);
    fill(0);
    text("Pressed 'Ok'    ", 10, 30);
    Serial.print('A');
  }

  if (cancel.GetTouch()) {
    stroke(255);
    fill(0);
    text("Pressed 'Cancel'", 10, 30);
    background(0,0,0); 
    ok.Paint();
    cancel.Paint();
    
  }
  // Monitor TouchShield Slide for touches
  gettouch();
 
  
  Xstore = mouseX;
  Ystore = mouseY; 
   
  // Monitor Serial Buffer of TouchShield Slide
  char charIn = 0;
  byte i = 0;
  char stringIn[32] = "";

  while(Serial.available()) {
    charIn = Serial.read();
    stringIn[i] = charIn;
    i += 1;
  }

  // Clear screen and display the serial buffer as text
  if (stringIn[0])
  {
   background(0,0,0); 
   delay(150);
   ok.Paint();
   delay(300);
   cancel.Paint();
   text(stringIn, mouseX+75, mouseY+75, 30, 30);
  }   

}

I have had a lot of problems with Software Serial, but it seems to work better at 2400 baud.

Also, you could try this code below which may speed up the touchSerial read.

void loop() 
{
    char c = (char)touchSerial.read();
    if (c == 'A')  {
      Serial.print("Got A");
    }
}