send_data_to_cloud(tmp_value,hum_value,val_lux,lightStatus,fanStatus);
lightStatus fanStatus //代表状态的单词(status)一般都是要上报云平台的;
打印输出函数,解析数据格式
if(uart1RxCounter==11&&uart1RxBuf[0]==0x55)
{
if(uart1RxBuf[7]==0x01)
{
tmp_value=uart1RxBuf[8];
hum_value=uart1RxBuf[9];
printf("接收到温度%d,湿度%d\r\n",tmp_value,hum_value);
}
if(uart1RxBuf[7]==0x06)
{
val_lux=((uint16_t)uart1RxBuf[8]<<8)+uart1RxBuf[9];
printf("接受到光照度%d\r\n",val_lux);
}
}
上报云平台数据格式
void send_data_to_cloud(int tmpval,int humval,int ill_val,uint8_t light_status,uint8_t fan_status)
{
uint8_t send_buf[128] = {0};
RTC_TimeTypeDef gTime;
RTC_DateTypeDef gDate;
//时间校准
HAL_RTC_GetTime(&hrtc, &gTime, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &gDate, RTC_FORMAT_BIN);
//time_cal(1, &gDate.Year, &gDate.Month, &gDate.Date, &gTime.Hours);
//这个地方一定要顶格写数据,不然数据格式是错的,因为数据sprintf中间用的(\)反斜杠是连接符号的意思,不顶格写会站一个空格,上报数据格式就会出错
sprintf((char *)send_buf, "\
%02X%02X%02X\
%02X%02X%02X\
%02X%02X\
%02X%02X%02X\
%02X%02X\
%02X%02X\
%02X%02X%02X%02X%02X%02X%02X%02X\
",
0x4a,0x00,0x00,
0x00,(tmpval & 0xff00) >> 8, (tmpval & 0x00ff),
0x06,humval,
0x01,(ill_val & 0xff00) >> 8, (ill_val & 0x00ff),
0x02, light_status,
0x03, fan_status,
0x04,20, gDate.Year, gDate.Month, gDate.Date, gTime.Hours, gTime.Minutes, gTime.Seconds);
printf("send sensors data:AT+NMGS=%d,%s\r\n", (strlen((char *)send_buf)/2), send_buf);//发送AT指令
send_AT_command("AT+NMGS=%d,%s\r\n", (strlen((char *)send_buf)/2), send_buf);//发送AT指令
}