Arduino串行通信中丢失的数据

时间:2013-10-25 04:18:34

标签: serial-port arduino

我有一个代码来接收arduino上的串行数据,但是当我发送单个数据时无法正常工作,例如,如果我发送的是4或7我没有得到那个号码,但是如果我发送的话454或44.5或任何其他具有各种数字的组合,它可以正常工作。

boolean estado = false;
int vect[10]; 
char val; 
int ledpin = 13; 
int pos = 90;
float consumo = 0;
double tarifa = 1.5;
double data = 0;
double  data_aux = 0;
int i=1;
int count = -1;
boolean temp = false;
void setup() {

  pinMode(ledpin, OUTPUT);  
  Serial.begin(9600);       

}

void loop() {


  if( Serial.available() >0 )       // daotos disponibles
  {

    val = Serial.read();

    // 'M' => medir
    if(val=='M')
    {
       consumo = analogRead(A0);


      Serial.println(consumo);

    }
    else 
    {
      // 'C' => Conectar
      if ( val == 'C')
      {
        Serial.println(tarifa);

      }
      else // Cambiar tarifa
      {
          ///prueba
          count = count + 1;
          vect[count] = val - '0'; 
          tarifa = vect[count];
        //fin

          while(Serial.available()>0)
        {
              if (temp == true)
              {

                val = Serial.read();      

              }
              if ( val == '\n' || val == '\r' || val=='\0')
              {
                break;
              }
              count = count + 1;
              vect[count] = val - '0'; 

              temp = true;
        }



            if(count > 0)
            {       
                for(int x = count; x > -1; x--)
                {
                    if(vect[x]==-2)
                    {
                        data_aux = data/i;
                        data = data_aux;
                        i = 1;
                    }
                    else
                    {
                        data = data + vect[x]*i;
                        i = i*10;
                    }


                }
                tarifa = data;
            }

0 个答案:

没有答案