使用采样的第一步,就是要添加采样
具体采样的相关步骤,可以参考资料采样,本文章不多赘述,下面将介绍一些常用的有关采样的接口以及基本的使用方法。
/**
* @LEVEL0
* @brief 获取采样管理器实例
* @return
*/
static SampleMgr* getInstance(IRuntime * rt);
/**
* @brief 获取全部采样定义[SID, SNAME, STBL]
* @return 返回TTable
*/
static TTable allSamples();
/**
* @LEVEL1
* @brief 暂停采样任务
* @param sid 默认空(全部)
* @return
*/
static bool pause(const string& sid="");
/**
* @LEVEL1
* @brief 继续采样任务
* @param sid 默认空(全部)
* @return
*/
static bool resume(const string& sid="");
/**
* @brief 删除指定id及日期范围的采样数据库, 与exportCSV对应
* @param sids 要删除的采样id,多个可用逗号分隔,如"1,2,5",为空时删除全部
* @param ymdstart 要删除的起始日期(含),格式:yyyymmdd
* @param ymdend 要删除的截止日期(含),格式:yyyymmdd
* @return 返回删除的文件数
*/
static int deleteDB(const string& sids, int ymdstart,int ymdend);
/**
* @brief 获取上次导出状态
* @usage
* for(auto &it : SampleMgr::getExportResult()) {
cout<<it.first<<" result is: "<<it.second<<endl;
* @return 返回列表<文件名,结果>. 结果为1表示成功,其他不成功。
}
*/
static map<string,string> getExportResult();
/**
* @brief 是否导出正在进行中
*/
static bool isExporting();
/**
* @HideCA
* @brief 删除超过设定期限的db文件。
* @usage SampleMgr::deleteExpiredDB("2");
*/
static bool deleteExpiredDB(const string& sid);
/**
* @HideCA
* @brief 删除超过设定期限的db文件。
*/
static void deleteExpiredDB();
/**
* @HideCA
* @brief 导出指定id及日期范围的采样数据到csv
* @param sids 多个采样id用逗号分隔,如 "1,2,3"。为空时,表示全部
* @param ymdstart 要导出的开始日期yyyyMMdd(含)
* @param ymdend 要导出的结束日期yyyyMMdd(含)
* @param dircsv 导出csv的目录(导出文件名不变,扩展名为csv)
* @note 如全部导出exportCSV("",0,99999999,"/customer/usr");
*/
void exportCSV(const string& sids,int ymdstart,int ymdend, const string& dircsv="");
// 导出全部采样数据到u盘,导出的目录为u盘下的“sample”目录
SampleMgr::getInstance(p_rt)->exportCSV("",0,99999999,"sample");
如果选择存储位置在 U 盘和 SD 卡,在屏上插入U盘
或者SD卡
即会生成一个以保存路径为名称
的文件夹,默认是samples
。如果选择的是HMI
,则将保存在/customer/usr
下。
如果只想单纯保存数据库,并不想保存为 csv 文件,可以参考以下代码 下面代码表示:将/customer/usr 的内容保存到 u 盘中,通过按钮触发
void Frm01::wMButton3_clk_cb(uint16_t code, LvEvent e) {
/*wMButton3(功能键)的点击事件*/
vector<string> v;
if(SysInfo::getHotPlugin()) {
v = SysInfo::getUdisksHot();
}
else {
v = SysInfo::getUdisks();
}
if (v.size() == 0){
pm->getMessageBox("未插入U盘!")->show();
return;
}
// v是u盘路径列表
int ret = util::FileUtil::copyPath("/customer/usr", v[0]);
if (ret)
pm->getMessageBox("success")->show();
else
pm->getMessageBox("failed")->show();
}