Skip to content

WIOTA同步终端数据保存

概述

这里主要以流程图介绍终端(IoTE)进行频点设置,再进行数据发送,在发送过程中保存统计信息的demo。

DEMO所在工程目录路径:PS/app/test/wiota_save_data_demo.c

默认该DEMO为关闭状态,打开需要添加宏定义如下:

#define WIOTA_SAVE_DATA_DEMO

在main.c中加入声明

void wiota_save_data_demo(void);

同时在main()函数中调用上述函数:

wiota_save_data_demo();

DEMO流程

主流程

主流程

如图所示,DEMO主要包括三部分,频点设置保存状态信息和发送数据到AP。通过设置好固定的频点,先保存状态信息到用户数据(静态数据)和指定FLASH地址,再发送数据指定到AP。

下面主要对发送数据到AP作详细说明。

发送数据到AP

主流程

如图所示,发送数据到AP是一个循环的操作,每次发送前都先获取连接状态和收发统计信息等用户数据(静态数据),再将用户数据到FLASH指定地址进行写操作,然后到指定的地址读取保存的数据,通过这些数据判断是否发生错误状态,若产生错误状态时,结束发送并退出WIoTa协议栈,否则对AP进行数据发送。

注意事项

地址选择

注意对FLASH指定地址的的选择作以下说明:IOTE是UC8288,在FLASH中,其静态数据占8k,起始地址504k,结束地址512k,为防止错误发生,此demo的测试地址可以选择存静态数据的起始地址的前面4K或者8K的空间用来测试,这里我们选择的是4K,即起始地址500k (0x7D000),结束地址504k。

读写FLASH

需要特别注意的是,在调用读写FLASH相关的函数时,先要执行暂停与ap的同步函数,执行后读写操作后,再执行恢复与ap的同步,伪代码如下:

uc_wiota_suspend_connect();
// do something ...
uc_wiota_recover_connect();

写FLASH,写之前需要先擦除,然后再写,相关函数如下:

uc_wiota_flash_erase_4K();
uc_wiota_flash_write();

读FLASH相关函数如下:

uc_wiota_flash_read();

使用的API接口列表

序号 函数名 功能
1. uc_wiota_init() WIoTa协议栈的初始化
2. uc_wiota_set_freq_info() 设置频点
3. uc_wiota_run() 启动WIoTa协议栈
4. uc_wiota_register_recv_data_callback() 被动接收数据接口注册
5. uc_wiota_connect() 连接同步ap
6. uc_wiota_get_state() 查询WIoTa当前状态
7. uc_wiota_reset_stats() WIoTa统计信息重置
8. uc_wiota_get_user_info() 获取用户定制静态数据首地址
9. uc_wiota_save_static_info() 主动保存用户数据
10. uc_wiota_suspend_connect() 暂停与ap的同步
11. uc_wiota_recover_connect() 恢复与ap的同步
12. uc_wiota_flash_erase_4K() 擦除4KB的FLASH内容
13. uc_wiota_flash_write() 将数据写入FLASH指定位置
14. uc_wiota_flash_read() 读出FLASH指定位置内容
15. uc_wiota_get_all_stats() WIoTa统计信息获取
16. uc_wiota_send_data() 发送数据
17. uc_wiota_exit() 关闭WIoTa协议栈
Back to top