1.调用一下创建的文件夹
在OnStartUp
if(MakeDirectory("/home/heu/datadisk/DVL/")==1)
{
MOOSTrace("文件夹创建成功\n");
CreateTxtFile(MOOSTime());
}
else MOOSTrace("文件夹创建失败\n");
2.在getdata输出原始数据
(1)方法一:直接输出
if(bcreattxt && file != NULL)
{
double t = MOOSTime();
struct tm *pt;
long seconds = (long)t;
pt = localtime((time_t *)&seconds);
fprintf(file, "\n%4d%02d%02d", 1900 + pt->tm_year, 1 + pt->tm_mon, pt->tm_mday);
fprintf(file, "%02d%02d%02d ", pt->tm_hour, pt->tm_min, pt->tm_sec);
fprintf(file, "%s", SliceA.c_str());
}
(2)方法二:再列一个函数
PrintData();
bool ZCINS_HEU::PrintData(const vector<uint8_t> &frame)
{
double t = MOOSTime();
struct tm *pt;
long seconds = (long)t;
pt = localtime((time_t *)&seconds);
if (bcreattxt && file != NULL)
{
fprintf(file, "\n%4d%02d%02d", 1900 + pt->tm_year, 1 + pt->tm_mon, pt->tm_mday);
fprintf(file, "%02d%02d%02d ", pt->tm_hour, pt->tm_min, pt->tm_sec);
for(uint8_t byte : frame) fprintf(file, "%02X ", byte);
return true;
}
}
3.创建文件夹
void DVL_HEU::CreateTxtFile(double nowtime)
{
double t = nowtime;
struct tm *pt;
long seconds = (long)t;
int year, mon, day, hour, min, sec;
std::string sFilePathName, sDirName, sSuffixName;
pt = localtime((time_t *)&seconds);
year = 1900 + pt->tm_year;
mon = 1 + pt->tm_mon;
day = pt->tm_mday;
hour = pt->tm_hour;
min = pt->tm_min;
sec = pt->tm_sec;
sDirName = "/home/heu/datadisk/DVL/";
sSuffixName = ".txt";
sFilePathName = MOOSFormat("%sDVL_%04d_%02d_%02d_%02d_%02d_%02d%s", sDirName.c_str(), year, mon, day, hour, min, sec, sSuffixName.c_str());
if ((file = fopen(sFilePathName.c_str(), "w+")) == NULL) MOOSTrace("创建txt文件失败\n");
else
{
MOOSTrace("创建txt文件成功\n");
bcreattxt = true;
}
}
补充需要的函数
int DVL_HEU::MakeDirectory(const char *folder_path)
{
if (!access(folder_path, F_OK))
{
/* 判断目标文件夹是否存在 */
return 1;
}
char path[512];
char *path_buf;
char temp_path[512];
char *temp;
int temp_len;
memset(path, 0, sizeof(path));
memset(temp_path, 0, sizeof(temp_path));
strcat(path, folder_path);
path_buf = path;
while ((temp = strsep(&path_buf, "/")) != NULL)
{
temp_len = strlen(temp);
if (0 == temp_len)
{
continue;
}
strcat(temp_path, "/");
strcat(temp_path, temp);
printf("temp_path = %s\n", temp_path);
if (-1 == access(temp_path, F_OK))
{
if (-1 == mkdir(temp_path, 0777))
{
return 2;
}
}
}
return 1;
}
另外,在数据储存是毫秒级时,占容量太大,设置1s/次输出储存数据
if(MOOSTime() - timer > 1){
PrintData(SliceA);
timer = MOOSTime();
}
添加功能-记录对准时间,
新添加一个MOOS变量,保存对准时间,再通过UDP转发给上位机
设置为if状态1==01,记录对准时间
if状态1==0B,对准结束
可以在解析数据中添加
static int flag1 = 0;
static int flag2 = 0;
static double time1 = 0.0;
static double time2 = 0.0;
if(uStatus1 == 0x01 && flag1 == 0)
{
flag1 = 1;
time1 = MOOSTime();
}
if(uStatus1 == 0x0B && flag2 == 0)
{
flag2 = 1;
time2 = MOOSTime();
}
if(flag1 == 1 && flag2 == 1)
{
double dfAlignTime = time2 - time1;
Notify("INS_AlignTime", dfAlignTime);
}