RDM6300 Code don't works

Galera, nao sei o que está acontecendo, mas todos os códigos que faço / testo com minha RMD6300 (RFID) não funciona como a que segue:

#include <SoftwareSerial.h>

SoftwareSerial rfid = SoftwareSerial(2, 3);


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Serial Ready");

  rfid.begin(9600);
  Serial.println("RFID Ready");
}

char c;
void loop() {
  // put your main code here, to run repeatedly:
  while (rfid.available() > 0) {
    Serial.println("avaliable");
    c = rfid.read();
    msg += c;
    Serial.println(msg);
    Serial.println(msg.length());
    delay(1000);
  }
}

Já não sei mais o que fazer. Meu projeto ja está quase entrando em atraso e tudo o que eu preciso é enviar a tag lida para um programa java para incluí-la em um banco de dados.

Alguem tem ideia do q pode ser?

Não vejo a variável 'msg' definida! Pode postar o retorno do programa no 'Serial Monitor'?
Eu eliminaria a linha:

    delay(1000);

ou então mudaria-a para fora do ciclo 'while'.

Esse não eh o código que de fato estou usando. Soh pra exemplificar. Eu abro o prompt e não há saída, apenas a do setup

Então se não é o código, não consigo ajudar. Talvez haja aqui alguém com capacidades extra-sensoriais que consiga.
Boa Sorte!

Resolvido.
usei o codigo

#include <SoftwareSerial.h>

SoftwareSerial RFID(19,1);
const int buzzer = 10;

void setup(){
RFID.begin(9600);
pinMode(buzzer,OUTPUT); 
}
char val[13];
String m, tag;
byte c;

void loop(){
if (RFID.available() > 0 ){

RFID.readBytes(val,13);
if (val > 0){
tone(buzzer,2500); 
delay(250);
}

m = val;
tag = m.substring(1,13);
RFID.println(tag);
RFID.flush();
noTone(buzzer);
delay(1000);

}else{
Serial.println("Erro na comunicação com sensor");
}
}

colocando a leitura no pino A5. Deu tão certo q nem quero mexer mais hahaha
Depois disso coloquei um buzzer e agora está 100%

Vlw pra quem tentou ajudar