Пробовал по RS485, ощущение что я чёто не так понял, Cauton Led панелька начинает через некоторое время черти чё показывать. Не выдержал переписал под CAN. Заработало шикос. Буду переносить под CAN все что буду подключать. На данный момент все на этапе протопирования. В качестве основного контроллера использую Arduino Due т.к. она является основным шлюзом между DcsBios и панелями. Обмен данными между панелями двоичный, к примеру если на Due приходит пакет с Id 0х201 значит переключатель, первый байт id переключателя, второй состояние. Id переключателя является индексом строкового массива, так если Id=11 значит данный элемент массива "CMSP_UPDN". Типа такого
Массив переключателей
char Swithes_Id[][10] = {
"CMSP_ARW1", "CMSP_ARW2", "CMSP_ARW3", "CMSP_ARW4",
"CMSP_DISP", "CMSP_JMR", "CMSP_JTSN", "CMSP_MODE",
"CMSP_MWS", "CMSP_RTN", "CMSP_RWR", "CMSP_UPDN"
};
Ну а это функция приема
void CAN_RX() {
CAN_1.readMsgBuf(&rxId, &len, rxBuf);
switch (rxId) {
case 0x201 : {
utoa(rxBuf[1], DCS_buf, 10);
sendDcsBiosMessage(Swithes_Id[rxBuf[0]], DCS_buf);}
break; }
}
Прошу строго не судить, это пока так, проба сил и алгоритмов.