修复head获取错误问题
authorCaisking <3449750381@qq.com>
Thu, 25 Apr 2024 02:31:40 +0000 (10:31 +0800)
committerCaisking <3449750381@qq.com>
Thu, 25 Apr 2024 02:31:40 +0000 (10:31 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp

index dcb2d9c..1daf04c 100644 (file)
@@ -289,6 +289,8 @@ namespace OHOS
         bool GetMomentum();
         /*发送实时数据*/
         void SendLiveData();
+        /*打印数据*/
+        void printTrainingData(const Trainingdata &data);
 
         std::string GetStartTiemStr();
         std::string GetEndTiemStr();
index 3826bb4..8f41f52 100644 (file)
@@ -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));
index 7d1f01a..4f0d9f6 100644 (file)
@@ -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