Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,10 @@ collection_loop() [背景執行緒]

## 更新日誌

### Version 8.0.2 (2025-12-22)
- **修正**: SQL資料庫時間戳未顯示到毫秒
- 修改 sql_uploader.py 程式碼建立資料表部分。

### Version 8.0.1 (2025-12-22)
- **優化**:資料夾建立邏輯改進
- 只有在啟用 CSV 或 SQL 時才建立輸出資料夾
Expand Down Expand Up @@ -1265,8 +1269,4 @@ collection_loop() [背景執行緒]

**最後更新**:2025年12月22日
**作者**:王建葦
<<<<<<< HEAD
**當前版本**:6.0.2
=======
**當前版本**:8.0.1
>>>>>>> fix/DAQ
**當前版本**:8.0.2
2 changes: 1 addition & 1 deletion src/sql_uploader.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ def create_table(self, table_name: str) -> bool:
create_table_sql = f"""
CREATE TABLE IF NOT EXISTS `{sanitized_table_name}` (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
timestamp DATETIME NOT NULL,
timestamp DATETIME(6) NOT NULL,
label VARCHAR(255) NOT NULL,
channel_1 DOUBLE NOT NULL,
channel_2 DOUBLE NOT NULL,
Expand Down
142 changes: 2 additions & 140 deletions 程式運作說明.md
Original file line number Diff line number Diff line change
Expand Up @@ -1579,143 +1579,5 @@ Flask Thread:
---

**最後更新**:2025年12月22日
<<<<<<< HEAD
**文件版本**:6.0.2
=======
**文件版本**:8.0.1
>>>>>>> fix/DAQ
**作者**:王建葦

### 版本更新記錄

<<<<<<< HEAD
=======
#### Version 8.0.1 (2025-12-22)
- **優化**:資料夾建立邏輯改進
- 只有在啟用 CSV 或 SQL 時才建立輸出資料夾
- 避免在不需要儲存檔案時建立空資料夾
- 如果 SQL 啟用但 CSV 未啟用,也會建立資料夾以存放 SQL 暫存檔

#### Version 8.0.0 (2025-12-22) - ProWaveDAQ 模組
- **重大更新**:遵循原廠手冊規範
- 基於原廠手冊 RS485_ModbusRTU通訊說明_PwDAQ.pdf 第 5 頁規範
- 使用 FC04 (Read Input Registers)
- 起始位址為 0x02 (Raw data FIFO buffer size)
- 讀取架構:[Size(1 word)] + [Data(N words)]
- 從 0x02 開始一次讀取完整封包(包含 Header + Data)
- 封包解析:`raw_packet[0]` 是 Header(剩餘大小),`raw_packet[1:]` 是實際資料
- **優化**:讀取效能提升
- 超時時間優化:1 秒 → 0.5 秒
- 添加 `skip_encode_mobile = True` 以優化讀取效能
- 遵循手冊 Page 5 流程,減少讀取次數

#### Version 7.0.0 (2025-12-22) - 主程式與前端
- **重大更新**:移除循環緩衝區,改用降頻佇列架構
- 移除固定大小循環緩衝區(`realtime_data_buffer`、`realtime_time_buffer`)
- 改用 `web_data_queue` 存儲降頻後的資料供前端使用
- 降頻比例:50(每 50 點取 1 點,約 156 Hz 更新率)
- 前端資料傳輸量減少約 98%(50:1 降頻)
- CSV 和 SQL 仍使用原始資料(不降頻,保持完整資料)
- **改進**:前端顯示優化
- 增量更新方式:使用 `push()` 將新資料加到圖表右側
- 使用 `splice()` 移除左側舊資料,維持固定視窗大小(500 點)
- 更新頻率:200ms → 100ms
- 關閉動畫:`animation: false`(減少閃爍並提升即時性)
- 關閉互動提示:`interaction.mode: 'none'`(減少 CPU 消耗)
- 不顯示資料點:`pointRadius: 0`(提升繪圖效能)
- **改進**:停止邏輯優化
- 立即更新 UI(解決延遲問題)
- 先停止前端更新,再發送停止請求給後端
- 即使網路錯誤,UI 也會立即停止
- **改進**:狀態同步
- 檢查後端 `is_collecting` 狀態
- 如果後端停止且無新資料,自動同步前端 UI
- 頁面載入時檢查後端狀態,自動恢復 UI

>>>>>>> fix/DAQ
#### Version 6.0.2 (2025-12-22)
- **重大更新**:固定大小循環緩衝區架構
- 使用 numpy array 建立固定大小的循環緩衝區(234,360 個資料點)
- 資料從第10秒位置開始寫入,前9秒保持為0
- 當資料超過10秒時,自動將舊資料往前推進(第10秒→第1秒→第2秒...→第9秒→第10秒)
- 時間陣列同步更新,前9個元素為0,只有最後一個元素有時間值
- 確保資料持續往前推進,不會停留在同一位置
- **改進**:停止邏輯優化
- 立即停止 DAQ 讀取,然後停止資料收集執行緒
- 剩餘檔案上傳和存檔在背景執行,不阻塞前端回應
- 加入超時機制,避免無限等待
- **清理**:移除未使用的變數和過時註解
- 移除 `realtime_time_write_index`、`sql_data_buffer`、`sql_buffer_max_size` 等未使用變數
- 清理過時和不必要的註解
- 更新所有程式檔案的版本號為 6.0.2

#### Version 6.0.0 (2025-01-06)
- **重大更新**:移除 Master.ini,改用 csv.ini 和 sql.ini
- 將 Master.ini 的功能拆分為兩個獨立的設定檔
- csv.ini:包含 CSV 分檔間隔設定([DumpUnit] 區段的 `second` 參數)
- sql.ini:包含 SQL 上傳間隔設定([DumpUnit] 區段的 `second` 參數)
- 統一命名規則:兩個設定檔都使用 `second` 作為參數名稱
- 前端設定頁面更新:移除 Master.ini 區段,新增 csv.ini 區段
- 所有功能保持不變,僅改變設定檔結構
- **改進**:統一表單欄位命名規則
- CSV 分檔間隔欄位:`csv_second`
- SQL 上傳間隔欄位:`sql_second`
- 保持命名規則一致性
- **新增**:網站 favicon 支援
- 所有頁面(index.html、config.html、files.html)都使用 imCloud.jpg 作為 favicon
- **改進**:前端顯示時間尺度設定為 10 秒
- 前端圖表顯示最近 10 秒的資料(每個通道約 78,120 個資料點)
- 後端緩衝區限制為 10 秒的資料量(234,360 個資料點,包含 3 個通道)

#### Version 4.1.0 (2025-12-17)
- **重大更新**:SQL 上傳邏輯重構
- 改為暫存檔案機制:資料先寫入暫存 CSV 檔案,定時上傳
- 建立暫存檔案目錄(`.sql_temp`),檔案命名格式:`{timestamp}_sql_temp.csv`
- 新增定時上傳執行緒(`sql_upload_timer_loop`),每 `sql_upload_interval` 秒檢查並上傳
- 上傳成功後自動刪除暫存檔案,並立即建立新暫存檔案(避免資料溢出)
- 停止時檢查並上傳所有剩餘暫存檔案
- 降低記憶體使用:資料直接寫入檔案,不佔用記憶體緩衝區
- 資料持久化:即使程式異常終止,暫存檔案仍保留
- **新增**:`sql_uploader.py` 新增 `upload_from_csv_file()` 方法
- 從 CSV 檔案讀取資料並批次上傳至 SQL 伺服器
- 支援自動建立資料表(如果不存在)
- 包含錯誤處理與重試機制
- **更新**:技術文件更新
- 更新 README.md 和 程式運作說明.md 以反映新的 SQL 上傳機制

#### Version 4.0.0 (2025-12-17)
- **改進**:程式碼註解完善
- 為所有核心模組添加完整的中文註解
- 所有函數和類別都有詳細的 docstring
- 說明函數用途、參數、返回值、注意事項
- 移除所有冗餘註解和步驟標記
- 提升程式碼可讀性和可維護性
- **改進**:技術文件更新
- 更新 README.md 和 程式運作說明.md 以符合目前程式碼
- 確保文件與實際程式碼功能一致

#### Version 3.0.0 (2025-12)
- **重大更新**:重構資料讀取邏輯
- 實現 Normal Mode 和 Bulk Mode 自動切換機制
- 根據緩衝區狀態(buffer_count)動態選擇讀取模式
- Normal Mode:當 buffer_count ≤ 123 時,從 Address 0x02 讀取
- Bulk Mode:當 buffer_count > 123 時,從 Address 0x15 讀取(最多 9 個樣本)
- FIFO buffer size(0x02) 連同資料一起讀出,確保資料一致性
- **改進**:讀取效率優化
- 一次讀取 Header 和資料,減少 Modbus 通訊次數
- 使用 `_read_registers_with_header()` 方法統一處理讀取邏輯
- 參考 LabView 轉換版本(G.py)的實現方式
- **改進**:程式碼清理
- 移除所有冗餘註解和步驟標記
- 簡化程式碼結構,提升可讀性
- **改進**:即時資料顯示
- 移除資料點數限制(原本限制 100000 個資料點)
- 現在會保留並顯示所有資料

#### Version 1.0.2 (2025-11-06)
- **修復**:讀取中進入 config 頁面再回到主畫面時,狀態會自動恢復
- **新增**:`/status` API 端點,用於檢查資料收集狀態
- **新增**:檔案瀏覽功能(`/files_page`、`/files`、`/download`)
- **優化**:智慧緩衝區更新機制,無活躍連線時不更新即時資料緩衝區
- **新增**:前端狀態恢復功能(`checkAndRestoreStatus()`)
- **新增**:檔案瀏覽頁面(`files.html`),支援資料夾導航和檔案下載
**文件版本**:8.0.2
**作者**:王建葦