菜单

将文件下载至U盘

下载

前言

下面将具体讲解,如何将数据库.db文件,以及将数据库表中的数据作为 csv 的表进行导出。

注意

以上判断 U 盘存在的方法仅对文件适用。如果需要播放 U 盘中的视频文件,该 U 盘的判断方法不适用

导出数据库源文件

获取 U 盘

方式一

通过内部方法检测是否插入了 U 盘

c++ 复制代码
vector<string> v;

if(SysInfo::getHotPlugin()) {
  v = SysInfo::getUdisksHot();
}
else {
  v = SysInfo::getUdisks();
}
if (v.size() == 0){
  pm->getMessageBox("未插入U盘!")->show();
  return;
}

方式二

检查 U 盘路径是否存在来判断是否插入了 U 盘

c++ 复制代码
string s_vendor = "/vendor";
vector<KV_Str_Str> res;
FileUtil::getPathContent(s_vendor, res);
if(res.size()==0) {
  pm->getMessageBox("请插入U盘!")->show();
  return;
}

获取路径

c++ 复制代码
string path = s_vendor + "/" + res[0].k

导出

如果是 default.db 位于屏内 /customer/prm/data 下
如果是采样、事件 位于屏内/customer/usr 下
需要引入 FileUtil 头文件 #include "util/FileUtil.h"

导出源文件

以上面方式一获取的 u 盘路径为案例

c++ 复制代码
// v是u盘路径列表
// 这里也可以直接使用copyFile
//FileUtil::copyFile("/customer/prm/data/default.db", v[0]);
int ret = FileUtil::copyPath("/customer/usr", v[0]);
if (ret)
  pm->getMessageBox("success")->show();
else
  pm->getMessageBox("failed")->show();

导出为 csv 表格形式

采样导出

采样导出时可以参考采样导出,无需进行 U 盘判断

c++ 复制代码
SampleMgr::getInstance(p_rt)->exportCSV("",0,99999999,"sample");

配方导出

直接使用导出方法,无需进行 U 盘判断

c++ 复制代码
wMRecipeTable1->rcpExportAs(path);

数据库表导出

将数据库中的 test 表以 csv 的形式导出到 U 盘

c++ 复制代码
string upath = v[0] + "/test.csv"
string err = "1";//1表示成功
int ret = FileUtil::exportDB2CSV("/customer/prm/data/default.db","test",upath,err);
#if __arm__
// 在hmi中还需要刷新一下缓存
    string re;
    Util::exeSync("sync", "r", re);
#endif
if (ret)
  pm->getMessageBox("success")->show();
else
  pm->getMessageBox("failed")->show();
上一个
如何刷新Linux文件缓存
下一个
如何设置MMA
最近修改: 2025-04-09Powered by