rs485.begin(28800);
I've seldom seen SoftwareSerial work at 9600 baud, I never saw a reliable communication with that software at such high data rates. Try at 4800, increase only if it works reliably. Use the highest data rate that worked for you over a longer period.
You don't need the delays before lowering the driver enable pin because SoftwareSerial does not work in the background, the write method does not return before the last bit was sent and no interrupt is handled in that time too.
Please learn to format code, these sketches look horrible. How can keep control over program flow with such a formatting? Do you know the auto-formatter of the IDE (Control-T)?
#include <RS485_non_blocking.h>
#include <RS485_protocol.h>
What do these files contain?
Your wait() function does the same as the standard delay(), are you aware of that?