Demorou, mas segue minha biblioteca para comunição RS485.
Como dito anteriormente, o protocolo utilizado é o descrito neste link.
No construtor é informado o id do dispositivo, um pointer para o Stream (&Serial, ou um SoftwareSerial) e o pino de controle envio/leitura do RS485.
Depois é só enviar a mensagem pelos métodos sendENQ, sendACK e sendNAK, de acordo com o que se deseja. Para receber a mensagem, deve-se ficar aguardando a mensagem (waitForMessage(long)), e depois verificar se houve atualização na mensagem (updated()). Só será recebida a mensagem se ela foi destinada ao dispositivo.
Via de regra, o master tem id 1 e os slaves quaisquer outros ids. O master envia comando para o slave, e aguarda resposta do mesmo, confirmando que a mensagem foi recebida (ACK). Os slaves sempre ficam aguardando comando, e quando recebem respondem dizendo que entenderam o comando (ACK) ou que não entenderam (NAK). Nessa resposta pode estar a informação desejada pelo master.
MasterSlaveFuji.h (1.16 KB)
MasterSlaveFuji.cpp (5.91 KB)