菜单

采样接口(导出数据)

下载

介绍

使用采样的第一步,就是要添加采样

具体采样的相关步骤,可以参考资料采样,本文章不多赘述,下面将介绍一些常用的有关采样的接口以及基本的使用方法。

接口参数

c++ 复制代码
/**
 * @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="");

使用方法

c++ 复制代码
// 导出全部采样数据到u盘,导出的目录为u盘下的“sample”目录
SampleMgr::getInstance(p_rt)->exportCSV("",0,99999999,"sample");

保存位置

如果选择存储位置在 U 盘和 SD 卡,在屏上插入U盘或者SD卡即会生成一个以保存路径为名称的文件夹,默认是samples。如果选择的是HMI,则将保存在/customer/usr下。

保存源文件

如果只想单纯保存数据库,并不想保存为 csv 文件,可以参考以下代码 下面代码表示:将/customer/usr 的内容保存到 u 盘中,通过按钮触发

c++ 复制代码
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();
}
最近修改: 2025-03-20Powered by