Здравствуйте, собираю систему управления в машину. Состоит из центрального блока на меге и несколько блоков (нано) управления разбросанных по кузову. Все соединено по RS485. Когда сделал первый блок, сконектил к меге без проблем, затем сделал второй, подправил что-то в меге и все, данные теряются.
Менял только время между командами. Пробовал подстраивать сейчас, не получается. Затем подправил еще скетч, добавил проверку первого и последнего байта. В итоге снова какой то мусор.
Вот кусок кода slave:
А вот прием на мастере:Код:if (RS.available()>=1){byte id=RS.read(); if(id==30){digitalWrite(13,HIGH);//старт передачи delay(2); RS.write(IDcol), RS.write(frost), RS.write(abs(Tmp)), RS.write(abs(tempd)), RS.write(spray), RS.write(Gal), RS.write(int(MinT)), RS.write(int(MaxT)), RS.write(PWM1), RS.write(PWM2), RS.write(PWMS), RS.write(AC), RS.write(LS), RS.write(HS), RS.write(EST), RS.write(IDcol); delay(10); digitalWrite(13,LOW);}//стоп передачи }
Код:digitalWrite(13,HIGH); delay(1); Serial1.write(30); delay(1); digitalWrite(13,LOW); delay(5); if (Serial1.available()){ idcol = Serial1.peek(); if(idcol==30){ idcol = Serial1.read(); Frost = Serial1.read(); Tmp1 = Serial1.read(); Tmp2 = Serial1.read(); spray = Serial1.read(); Gal = Serial1.read(); MinT = Serial1.read(); MaxT = Serial1.read(); PWM1 = Serial1.read(); PWM2 = Serial1.read(); PWMS = Serial1.read(); AC = Serial1.read(); LS = Serial1.read(); HS = Serial1.read(); EST = Serial1.read(); IDcol = Serial1.read(); if(idcol==IDcol){ID30_OK=1;}else{ID30_OK=0;} }}




Ответить с цитированием