I've been using Bill Porter's "Easy transfer" library
over a half duplex RS485 connection and it works reliably when there only two parties talking in a master slave fashion. I can send thousands of messages and see that they are all successfully decoded by the slave.
If I add a second slave to the same bus that uses a different packet format, then take turns sending a message to one slave and then the other, then about 1 in every 200 or so packets fails to get decoded by one or other of the slaves.
The master uses two instances of the EasyTransfer object each with a unique struct that I created for each slave. They alternately pipe their output to the same hardware serial port which I flush at the end of each transmission to ensure that there is no cross contamination of outgoing message bytes.
On each slave I'm guessing that the EasyTransfer::receiveData() function is sometimes getting confused by the 'unwanted' data intended for the other slave that arrives in its receive buffer as a prefix to the 'wanted' data. Does this sound plausible?