训练:优化配速表心率表的存储
authorCaisking <3449750381@qq.com>
Tue, 15 Oct 2024 02:47:43 +0000 (10:47 +0800)
committerCaisking <3449750381@qq.com>
Tue, 15 Oct 2024 02:47:43 +0000 (10:47 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp

index f1a9f6f..c9548ad 100644 (file)
@@ -339,6 +339,8 @@ public:
   // 打印配置
   void printTrainingData(const Trainingdata &data); /*打印数据*/
   void printf_data(SportData *data);                /*打印函数*/
+  void PrintHeartRateTable();
+  void PrintPaceTable();
 
   //配置用户信息
   void SetUserSportdata();
@@ -379,9 +381,8 @@ private:
 
   std::vector<HeartRateEntry> heartRateTable; // 心率表
   std::vector<PaceEntry> paceTable;           // 配速表
-  const size_t MAX_ENTRIES = 10000;           // 规定最大进场条目数
-  /*std::unique_ptr<SportData> sportdata;*/   // 使用 std::unique_ptr 管理
-                                              // SportData 对象
+  const size_t MAX_ENTRIES = 100000;           // 规定最大进场条目数
+
 
   int user_maxHeart{190}; // 用户最高心率
   int user_Age{20};      // 用户年龄
index 98abd86..cdbc359 100644 (file)
@@ -179,8 +179,8 @@ void store_sport_data() {
   OHOS::TraingModel::GetInstance()->RecordSportData();
   return;
 }
-namespace OHOS {
 #if TIMER
+namespace OHOS {
 // 声明定时器变量
 static osTimerId_t g_startCounting = NULL; // 定时器
 static constexpr uint64_t MS_ONE_SECONDS = 1000;
@@ -1213,9 +1213,40 @@ bool TraingModel::AddPaceData(uint32_t timestamp, uint16_t pace) {
   paceTable.push_back(newEntry);
   return true; // 返回成功
 }
+//心率表打印
+void TraingModel::PrintHeartRateTable() {
+  size_t heartRateCount = heartRateTable.size();
+  if (heartRateCount == 0) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "心率表为空,无法打印。");
+    return;
+  }
 
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Heart Rate Table:");
+  for (const auto &entry : heartRateTable) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "时间戳: %u, 心率: %d",
+                  entry.timestamp, entry.heartRate);
+  }
+}
+//配速表打印
+void TraingModel::PrintPaceTable() {
+  size_t paceCount = paceTable.size();
+  if (paceCount == 0) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "配速表为空,无法打印。");
+    return;
+  }
+
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Pace Table:");
+  for (const auto &entry : paceTable) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "时间戳: %u, 配速: %.2f",
+                  entry.timestamp, entry.pace);
+  }
+}
 // 保存心率表
 bool TraingModel::SaveHeartTable() {
+
+  //打印数组
+  PrintHeartRateTable();
+
   CreateDirectoryIfNotExists(TRAINING_HEART_FILE);
 
   size_t heartRateCount = heartRateTable.size();
@@ -1251,6 +1282,10 @@ bool TraingModel::SaveHeartTable() {
 
 // 保存配速表
 bool TraingModel::SavePaceTable() {
+
+  //打印数组
+  PrintPaceTable();
+
   CreateDirectoryIfNotExists(TRAINING_PACE_FILE);
 
   size_t paceCount = paceTable.size();
@@ -1438,9 +1473,9 @@ void TraingModel::SendLiveDataIfNecessary() {
   }
 }
 
-// 每分钟进行配速和心率数据存储
+// 每10秒进行配速和心率数据存储
 void TraingModel::StoreDataIfMinutePassed() {
-  if (sportdata->duration % 60 == 0) {
+  if (sportdata->duration % 10 == 0) {
     uint32_t timestamp;
     if (uapi_get_timestampe_ss(&timestamp) == ERRCODE_SUCC) {
       AddHeartRateData(timestamp, sportdata->heart);