一些关于Arduino上传阿里云的问题

最近在弄51单片机检测温湿度后上传到阿里云,遇到一下一些问题:
在编写esp8266上传云端的代码时,发现要发送的float类型在做了一些简单的处理后就无法上传到云端了。
一下是我一开始上传云端的代码:

(arduino部分)
//ESP8266串口接收数据与数据处理函数
void Serial_Rece_Process(void)
{
  unsigned char i =0;
  unsigned char sg = 0;

  while (Serial.available())
  {
    Serial_Buf[Rx_Cnt] = Serial.read();
    Rx_Cnt++;
    delay(3);
  }

  if (Rx_Cnt != 0)
  { 
   AliyunIoTSDK::send("temperature",atof(Serial_Buf));

    AliyunIoTSDK::send("Humidity",atof(Serial_Buf));
    
    Rx_Cnt = 0;
    //此处放置串口数据处理等代码
  }
}

(keil部分)

        sprintf(usart_SendTemp,"%d.%d \r\n",rec_dat[2],rec_dat[3]);
        sprintf(usart_SendHump,"%d.%d \r\n",rec_dat[0],rec_dat[1]);
        
        Uart_SendStrData(usart_SendTemp);
        delay_ms(3);
        
        Uart_SendStrData(usart_SendHump);

这段代码可以成功上传阿里云,但是不可以区分到温湿度:

img

为了尝试区分温湿度,我把代码改成了这样:
(arduino部分)

//ESP8266串口接收数据与数据处理函数
void Serial_Rece_Process(void)
{
  unsigned char i =0;
  unsigned char sg = 0;

  while (Serial.available())
  {
    Serial_Buf[Rx_Cnt] = Serial.read();
    Rx_Cnt++;
    delay(3);
  }

  if (Rx_Cnt != 0)
  { 
    
    if(Serial_Buf[0] == 't')
    {
      for(i=0;i<=Rx_Cnt-2;i++)
      {
        Serial_Buf[i]=Serial_Buf[i+2];
      }
      AliyunIoTSDK::send("temperature",atof(Serial_Buf));
    }

    
    if(Serial_Buf[0] == 'h')
    {
      for(i=0;i<=Rx_Cnt-2;i++)
      {
        Serial_Buf[i]=Serial_Buf[i+2];
      }
      AliyunIoTSDK::send("Humidity",atof(Serial_Buf));
    }
    
    Rx_Cnt = 0;
    //此处放置串口数据处理等代码
  }
}

(keil部分)

        sprintf(usart_SendTemp,"t=%d.%d \r\n",rec_dat[2],rec_dat[3]);
        sprintf(usart_SendHump,"h=%d.%d \r\n",rec_dat[0],rec_dat[1]);
        
        Uart_SendStrData(usart_SendTemp);
        delay_ms(3);
        
        Uart_SendStrData(usart_SendHump);

但是这样,上传数据到阿里云上就会失败,阿里云接收不到数据,不知道时什么原因

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^