Serial port Arduino串行通信中的数据丢失

Serial port Arduino串行通信中的数据丢失,serial-port,arduino,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 d

我有一个在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;
            }

“如果我发送一个4或7,我就不知道该怎么做了”你得到了什么?我得到了-38,我看到了一个proiblems第二个数据存储在firts和second position中,我首先解决了保存所有数据的问题,然后看看该怎么做,但现在我在发送超过六个字符时遇到了问题。