RS485 Protocol Library problems

I am trying to use Nick's http://www.gammon.com.au/forum/?id=11428 RS485 Protocol Library. I am sending data from one Arduino with sensors to another Arduino via RS-485. My plan is to have 2 remote Arduino's sending sensor data to a 3rd Arduino (Mega) with an LCD and touchscreen. I had this all working using i2c, but due to the length of the cables it had problems so I am switching it to RS485. I am doing a test right now with 1 remote sending data to another, which then sends that data to my serial monitor to confirm it is receiving the data. Here is the code for the remote;

  // assemble message
  byte msg [] = { 
     1,    // device 1
     2,    // outside info
     Whole, // out humidity
     Whole1, // outdoor temp
     pressure, // baro pressure
     atm // atmospheric pressure
  };

  // send to slave  
  digitalWrite (EN, HIGH);  // enable sending
  sendMsg (fWrite, msg, sizeof msg);
  digitalWrite (EN, LOW);  // disable sending

I have verified with my PC via usb>RS-485 adapter that the data is being sent, but I can't receive the data on the arduino using Nick's code;

#include <SoftwareSerial.h>
#include "RS485_protocol.h"

#define RxD 11
#define TxD 12

SoftwareSerial mySerial(RxD,TxD);
int EN = 13;

void fWrite (const byte what)
  {
  mySerial.print (what);  
  }
  
int fAvailable ()
  {
  return mySerial.available ();  
  }

int fRead ()
  {
  return mySerial.read ();  
  }

void setup()
{
  mySerial.begin(57600);
  Serial.begin (57600);
  Serial.println("starting");
  pinMode(EN, OUTPUT );
}

void loop()
{

  byte buf [32];
  
  byte received = recvMsg (fAvailable, fRead, buf, sizeof (buf) - 1);
  
  if (received)
    {
    Serial.println("received");
	if (buf [0] != 1)
      return;  // not my device
      
    if (buf [1] != 2)
      return;  // unknown command
    
	Serial.println(buf [2]);
   }  // end if something received
    
}

With the above code I should see "received" in the serial monitor if anything is received. If I use the following in my loop I receive the data no problem;

  String content = "";
  char character;
  while(mySerial.available()) {
      character = mySerial.read();
      content.concat(character);
  }

  if (content != "") {
	content.toCharArray (charBuf, 40);
	Serial.println(charBuf);
  }

so my hardware seems to be working fine - but I must be doing something wrong here?

My guess for the source of your problems:

  mySerial.begin(57600);

I never got a SoftwareSerial instance to reliably transfer more than a few bytes with rates higher than 38400. If the Arduino was doing something else (not only transfering data), my max. rate of successfully transfering data was 9600. Try your sketch with a speed of 9600 and your problems are probably gone.
If you want to use higher speeds use the hardware serial interface.

I have had no problems transferring data at 57600 using SoftwareSerial. I tried 9600 with the same results - nothing at all received. If this works for receiving the data at 57600;

  String content = "";
  char character;
  while(mySerial.available()) {
      character = mySerial.read();
      content.concat(character);
  }

  if (content != "") {
	content.toCharArray (charBuf, 50);
	Serial.println(charBuf);
  }

then why would it not work at the same speed using this;

  byte buf [50];
  
  byte received = recvMsg (fAvailable, fRead, buf, sizeof (buf) - 1);
  
  if (received)
    {
    Serial.println("received");
	if (buf [0] != 1)
      return;  // not my device
      
    if (buf [1] != 2)
      return;  // unknown command
    
	Serial.println(buf [2]);
   }  // end if something received

Even if it was a problem with the speed, I should at least get an occasional "received" message from this code that something has been received?

Did you check that what you received is exactly what you sent? The RS485 protocol includes a CRC to check the correct transmission of the content. If that doesn't match, the rcvMsg() function returns 0.