10 1wire датчиков и processing

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

Собираю побайтово, с 10ти датчиков пакет и отправляю в процессинг, с нуля всё работает, но если закрыть программу и занаво запустить, со стороны ардуины сыпется куча пакетов и потом начинает читать с середины пакета. Если закрыть софтину, открыть терминал, принять весь этот мусор, то при повторном запуске программы, всё работает.

ардуино:


if (Serial.read()=='c'){ 
Serial.flush();
Serial.print(124);//метка начала пакета
for (int i=0; i<10; i++){
  delay(50);
  if (temproom[i] < 10)Serial.print('0');//массив с данными
  Serial.print (temproom[i], 0);

процессинг:

  myPort.write('c');//комманда отправки
  if ( myPort.available() > 0) {  
  val = (myPort.read());
    login[i]=val-48; //массив куда собираются данные
    i++;
    if (i>22){
    i=0;
    }
  }

 

knack
knack аватар
Offline
Зарегистрирован: 27.03.2012

вот так работает:

ардуино

if (Serial.available()){
  if (Serial.read()=='c'){ 
    Serial.flush();
    Serial.print(124);
    for (int i=0; i<10; i++){
      if (temproom[i] < 10)Serial.print('0');
    Serial.print (temproom[i], 0);
    }
  }
  else Serial.flush();

процессинг:

if (opros == true){ 
  myPort.write('c');
  opros = false;
  if ( myPort.available() > 0) {  
    for (int i = 0; i<22; i++){
      val = (myPort.read());
      login[i]=val-48;
    }
   }
  }
 opros = true; 
 myPort.clear();