As far as I understood you can have multiple softwareserial ports open at the same time.
Sending info to a software port doesn't require much attention, but keeping track of incoming data from two softwareserial ports with a relative slow micro controller does. You should there for be able to send info to all ports whenever you want and have them opened simultaneous, but need to tell which one you want to monitor.
I can't test it right now since I'm not at home, but as far as I understand the documentation of softwareserial the next code should... work in theory.
#include <SoftwareSerial.h>
SoftwareSerial rfid = SoftwareSerial(5, 6,true);
SoftwareSerial lcd = SoftwareSerial(2,3);
void setup()
{
Serial.begin(9600);
rfid.begin(38400);
lcd.begin(9600); //lcd coms BR
Serial.println("Tag reader");
lcd.write(12); //cls and return to home position
lcd.print("Tag reader");
rfid.listen() // this should... do the trick.
delay(1000);
}
void loop() {
if (rfid.available() > 0) {
char inByte = rfid.read();
Serial.write(inByte);
lcd.write(12); //cls and return to home position
lcd.write(inByte);
}
}
By the way, the info displayed on the LCD probably is hard to read. In your code you clear the screen before each character you receive. When the rfidreader sends a space, return or other non-visible as last character, you may... see nothing at all.
Listening to the rfid-port probably is most important in your project and I don't know whether it's possible to check the status of your lcd (to get some info from both softwareserial ports).
Should you want to, you should be able to do it by adding code like this :
lcd.listen(); // temporarily switch port to listen to the LCD
checkstatus(); // assuming you programmed a function to check/display the LCD status
rfid.listen(); // switch back to the most important port asap