From: Caisking <3449750381@qq.com> Date: Thu, 25 Apr 2024 02:31:40 +0000 (+0800) Subject: 修复head获取错误问题 X-Git-Tag: release_V1.2.70_20241020_135402~1133 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=30615315c94a06e01071f0587560c9d44fc0ab77;p=mirrors%2FFD230.git 修复head获取错误问题 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h index dcb2d9cfb..1daf04cd1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -289,6 +289,8 @@ namespace OHOS bool GetMomentum(); /*发送实时数据*/ void SendLiveData(); + /*打印数据*/ + void printTrainingData(const Trainingdata &data); std::string GetStartTiemStr(); std::string GetEndTiemStr(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp index 3826bb4bd..8f41f5258 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp @@ -85,7 +85,7 @@ namespace OHOS TraingModel::GetInstance()->InitLabel(labeluheart, 146, 642, 240, 40, "label11", "平均心率(次/分)", DEFAULT_VECTOR_FONT_FILENAME, 30); TraingModel::GetInstance()->InitLabel(labelusteps, 146, 772, 240, 40, "label12", "步数", DEFAULT_VECTOR_FONT_FILENAME, 30); TraingModel::GetInstance()->InitLabel(labelustrong, 146, 902, 240, 40, "label2", "训练强度", DEFAULT_VECTOR_FONT_FILENAME, 30); - TraingModel::GetInstance()->InitLabel(labelnote, 80, 1024, 300, 40, "label8", "更多请前往手机APP查看", DEFAULT_VECTOR_FONT_FILENAME, 30); + TraingModel::GetInstance()->InitLabel(labelnote, 80, 1024, 300, 40, "label8", "更多请前往APP查看", DEFAULT_VECTOR_FONT_FILENAME, 30); // 设置文本颜色 labelduration->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index 7d1f01adf..4f0d9f6f5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -627,6 +627,11 @@ namespace OHOS free(end_time); // 释放内存 PRINT("sportdata->end_time [%s]\r\n", (sportdata->end_time).c_str()); + if (SaveSportData() == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSportData error!"); + } +#if 0 /*存储正常数据[运动量达标]*/ if (MomentumFlag) { @@ -636,7 +641,7 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSportData error!"); } } - +#endif Startstate = false; Endstate = true; } @@ -775,6 +780,27 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Not set Sport_Tag!"); return 0; // 添加默认返回值 } + /*打印存储数据*/ + void TraingModel::printTrainingData(const Trainingdata &data) + { + printf("Trainingdata:\n"); + printf("src: %d\n", data.src); + printf("bt: %u\n", data.bt); + printf("ty: %u\n", data.ty); + printf("st: %u\n", data.st); + printf("sp: %u\n", data.sp); + printf("tgt: %u\n", data.tgt); + printf("tg: %u\n", data.tg); + printf("pg: %u\n", data.pg); + printf("du: %u\n", data.du); + printf("ca: %u\n", data.ca); + printf("di: %u\n", data.di); + printf("hr: %u\n", data.hr); + printf("stp: %u\n", data.stp); + printf("ti: %u\n", data.ti); + printf("cir: %u\n", data.cir); + printf("alt: %u\n", data.alt); + } /*获取训练目标完成百分比*/ int TraingModel::GetGoaldegree() { @@ -833,10 +859,22 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "write_Trainingdata_data is error!"); return false; } + /*test*/ + + Trainingdata *readdata{nullptr}; + int i = 0; + while (readdata = read_Trainingdata_data("2024_04_24", i)) + { + printTrainingData(*readdata); + // delete readdata; + free(readdata); + i++; + } return true; // delete data; } + /*设置开启方式*/ void TraingModel::SetSportOpenWay(bool way) { @@ -1022,53 +1060,18 @@ namespace OHOS extern "C" { #endif - // 处理数据头 - static void write_Trainingdata_hard_data(char *data) - { - char file_path[128] = {0}; - sprintf(file_path, "%shard_%s.bin", TRAINING_PATH, data); - - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s", file_path); - FILE *fp = fopen(file_path, "rb+"); - Trainingdata_hard hard; - int ret = 0; - if (fp == NULL) - { - hard.num = 0; - fp = fopen(file_path, "wb+"); - } - else - { - ret = fread((void *)&hard, sizeof(Trainingdata_hard), 1, fp); - } - - fseek(fp, 0, SEEK_SET); - fclose(fp); - - fp = fopen(file_path, "wb+"); - hard.num++; - ret = fwrite((void *)&hard, sizeof(Trainingdata_hard), 1, fp); - fseek(fp, 0, SEEK_SET); - fclose(fp); - } // 获得数据个数 - static int get_Trainingdata_data_num(char *data) + static int get_Trainingdata_data_num(FILE *fp) { - - char file_path[128] = {0}; - sprintf(file_path, "%shard_%s.bin", TRAINING_PATH, data); - - FILE *fp = fopen(file_path, "ab"); - if (fp == NULL) + long size = 0; + if (fp != NULL) { - return 0xffffff; + fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾 + size = ftell(fp); // 获取当前文件指针位置,即文件大小 + fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头 } - fseek(fp, 0, SEEK_SET); - Trainingdata_hard hard; - int ret = fread((void *)&hard, sizeof(Trainingdata_hard), 1, fp); - fseek(fp, 0, SEEK_SET); - fclose(fp); - return hard.num; + int num = size / 64; + return num; } // 写数据 @@ -1080,7 +1083,6 @@ namespace OHOS sprintf(file_path, "%s%s.bin", TRAINING_PATH, timeday); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s", file_path); - write_Trainingdata_hard_data(timeday); FILE *fp = fopen(file_path, "ab"); if (fp == NULL) { @@ -1161,9 +1163,9 @@ namespace OHOS FILE *fp = fopen(file_path, "rb+"); Trainingdata *data = (Trainingdata *)malloc(sizeof(Trainingdata)); - if (fp == NULL || get_Trainingdata_data_num(timedata) < offset) + if (fp == NULL || get_Trainingdata_data_num(fp) < offset) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file is NULL %d", get_Trainingdata_data_num(timedata)); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file is NULL %d", get_Trainingdata_data_num(fp)); return NULL; } #if HARD_OFF