diff --git a/CMakeLists.txt b/CMakeLists.txt index 449e6d6..2c5d31f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,6 +96,7 @@ target_link_libraries(edge_proxy PRIVATE # ================================================================= add_executable(test src/test.cc + src/SQL/data_storage.cc ) diff --git a/docker/Dockerfile b/docker/Dockerfile index 36e09b2..5adbacf 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -74,15 +74,13 @@ RUN cd /tmp/build-context/external/paho.mqtt.c && \ # 在所有 apt 操作完成后,最后进行清理 rm -rf /var/lib/apt/lists/* COPY piper_models/ /app/piper_models/ - +# 5. 设置默认用户 +# ================================= +# 容器的默认用户将是 'dev' +USER dev RUN pip install --no-cache-dir --user piper-tts # 将 ~/.local/bin (包含 piper 二进制文件) 添加到 PATH RUN echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile # 现在,dev 用户可以使用 `piper` 命令了,只要 shell 环境被正确加载。 # 我们可以将最终的 CMD 设置为加载环境然后执行一个命令,或者留空让用户交互。 -# 5. 设置默认用户 -# ================================= -# 容器的默认用户将是 'dev' -USER dev - diff --git a/src/modbus/modbus_rtu_poller_service.cc b/src/modbus/modbus_rtu_poller_service.cc index e888014..3bbc486 100644 --- a/src/modbus/modbus_rtu_poller_service.cc +++ b/src/modbus/modbus_rtu_poller_service.cc @@ -92,7 +92,14 @@ void ModbusRtuPollerService::run() { } // 在本线程中等待,不影响主线程的事件循环 - std::this_thread::sleep_for(std::chrono::milliseconds(m_config.poll_interval_ms)); + auto wake_up_time = std::chrono::steady_clock::now() + std::chrono::milliseconds(m_config.poll_interval_ms); + while (std::chrono::steady_clock::now() < wake_up_time) { + if (m_stop_flag) { + break; + } + // 每次只“打盹”100毫秒 + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } } // 线程退出前关闭串口