概述
本文分析基于固件OneNET-Demo_v5(适配M5310sp3)
//main函数中,循环调用
int main()
{
// 省略一段.........
do
{
ret = nbiot_device_step( dev, 1); // 处理上下行数据的总入口
if ( ret )
printf( "device step error, code = %d.rn", ret );
res_update(30); // 30s
} while(1);
// 省略一段.........
}
void res_update(time_t interval)//interval 时间间隔 单位 s
{
SHT20_INFO sht20;
if(cur_time >= last_time + interval)
{
cur_time = 0;
last_time = 0;
temp.flag |= NBIOT_UPDATED;
humi.flag |= NBIOT_UPDATED;
sht20 = SHT20_GetValue();
temp.value.as_float = sht20.tempreture;
humi.value.as_float = sht20.humidity; // .as_float 为 double 类型
illumi.flag |= NBIOT_UPDATED; // 0x8
BH1750_test();
illumi.value.as_float = result_lx;
}
else if(cur_time == 0 && last_time == 0)
{
cur_time = nbiot_time();
last_time = cur_time;
}
else
{
cur_time = nbiot_time();
}
}
int nbiot_device_step( nbiot_device_t *dev,int timeout )
{
time_t last;
time_t curr;
uint8_t buffer[NBIOT_SOCK_BUF_SIZE];
last = nbiot_time();
do
{
int buffer_len = nbiot_recv_buffer( buffer, sizeof(buffer) );
if ( buffer_len > 0 )
{
nbiot_handle_buffer( dev, // 判断平台发来的数据是否是read write execute等请求,如果是则进行反馈
buffer,
buffer_len,
sizeof(buffer) );
}
memset(buffer,0,sizeof(buffer));
curr = nbiot_time();
nbiot_register_step( dev, // nbiot_register_start 注册设备:dev->state = STATE_REGISTERED ......
curr,
buffer,
sizeof(buffer));
if (dev->state == STATE_REGISTERED ||
dev->state == STATE_REG_UPDATE_NEEDED ||
dev->state == STATE_REG_UPDATE_PENDING||
dev->state == STATE_DEREG_PENDING||
dev->state == STATE_REG_PENDING||
dev->state == STATE_REG_FAILED ){
nbiot_transaction_step( dev,
curr,
buffer,
sizeof(buffer));
}
if ( dev->state == STATE_REGISTERED||dev->state == STATE_REG_UPDATE_PENDING||dev->state == STATE_REG_UPDATE_NEEDED ){
nbiot_observe_step( dev,
curr,
buffer,
sizeof(buffer) );
}
nbiot_sleep(10);
} while ( curr <= last + timeout );
return 0;
// return STATE_ERROR( dev );
}
nbiot_device_step
循环,先进行② fifo_get()读取fifo中的数据(fifo_put过程点此),再进行第③步判断接收的数据是否是read write execute等请求,如果是则进行反馈。
其中m5310_notify_upload
是数据上传更新,AT+MIPLNOTIFY=0
m5310_read_upload
回复平台读操作,AT+MIPLREAD=0
最后
以上就是动人奇迹为你收集整理的OneNET NB 学习笔记三 接收数据处理与回复过程的全部内容,希望文章能够帮你解决OneNET NB 学习笔记三 接收数据处理与回复过程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复