1+x NB-IOT通信

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指令

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容