@@ -1579,143 +1579,5 @@ Flask Thread:
15791579---
15801580
15811581** 最後更新** :2025年12月22日
1582- <<<<<<< HEAD
1583- ** 文件版本** :6.0.2
1584- =======
1585- ** 文件版本** :8.0.1
1586- >>>>>>> fix/DAQ
1587- ** 作者** :王建葦
1588-
1589- ### 版本更新記錄
1590-
1591- <<<<<<< HEAD
1592- =======
1593- #### Version 8.0.1 (2025-12-22)
1594- - ** 優化** :資料夾建立邏輯改進
1595- - 只有在啟用 CSV 或 SQL 時才建立輸出資料夾
1596- - 避免在不需要儲存檔案時建立空資料夾
1597- - 如果 SQL 啟用但 CSV 未啟用,也會建立資料夾以存放 SQL 暫存檔
1598-
1599- #### Version 8.0.0 (2025-12-22) - ProWaveDAQ 模組
1600- - ** 重大更新** :遵循原廠手冊規範
1601- - 基於原廠手冊 RS485_ModbusRTU通訊說明_PwDAQ.pdf 第 5 頁規範
1602- - 使用 FC04 (Read Input Registers)
1603- - 起始位址為 0x02 (Raw data FIFO buffer size)
1604- - 讀取架構:[ Size(1 word)] + [ Data(N words)]
1605- - 從 0x02 開始一次讀取完整封包(包含 Header + Data)
1606- - 封包解析:` raw_packet[0] ` 是 Header(剩餘大小),` raw_packet[1:] ` 是實際資料
1607- - ** 優化** :讀取效能提升
1608- - 超時時間優化:1 秒 → 0.5 秒
1609- - 添加 ` skip_encode_mobile = True ` 以優化讀取效能
1610- - 遵循手冊 Page 5 流程,減少讀取次數
1611-
1612- #### Version 7.0.0 (2025-12-22) - 主程式與前端
1613- - ** 重大更新** :移除循環緩衝區,改用降頻佇列架構
1614- - 移除固定大小循環緩衝區(` realtime_data_buffer ` 、` realtime_time_buffer ` )
1615- - 改用 ` web_data_queue ` 存儲降頻後的資料供前端使用
1616- - 降頻比例:50(每 50 點取 1 點,約 156 Hz 更新率)
1617- - 前端資料傳輸量減少約 98%(50:1 降頻)
1618- - CSV 和 SQL 仍使用原始資料(不降頻,保持完整資料)
1619- - ** 改進** :前端顯示優化
1620- - 增量更新方式:使用 ` push() ` 將新資料加到圖表右側
1621- - 使用 ` splice() ` 移除左側舊資料,維持固定視窗大小(500 點)
1622- - 更新頻率:200ms → 100ms
1623- - 關閉動畫:` animation: false ` (減少閃爍並提升即時性)
1624- - 關閉互動提示:` interaction.mode: 'none' ` (減少 CPU 消耗)
1625- - 不顯示資料點:` pointRadius: 0 ` (提升繪圖效能)
1626- - ** 改進** :停止邏輯優化
1627- - 立即更新 UI(解決延遲問題)
1628- - 先停止前端更新,再發送停止請求給後端
1629- - 即使網路錯誤,UI 也會立即停止
1630- - ** 改進** :狀態同步
1631- - 檢查後端 ` is_collecting ` 狀態
1632- - 如果後端停止且無新資料,自動同步前端 UI
1633- - 頁面載入時檢查後端狀態,自動恢復 UI
1634-
1635- >>>>>>> fix/DAQ
1636- #### Version 6.0.2 (2025-12-22)
1637- - ** 重大更新** :固定大小循環緩衝區架構
1638- - 使用 numpy array 建立固定大小的循環緩衝區(234,360 個資料點)
1639- - 資料從第10秒位置開始寫入,前9秒保持為0
1640- - 當資料超過10秒時,自動將舊資料往前推進(第10秒→第1秒→第2秒...→第9秒→第10秒)
1641- - 時間陣列同步更新,前9個元素為0,只有最後一個元素有時間值
1642- - 確保資料持續往前推進,不會停留在同一位置
1643- - ** 改進** :停止邏輯優化
1644- - 立即停止 DAQ 讀取,然後停止資料收集執行緒
1645- - 剩餘檔案上傳和存檔在背景執行,不阻塞前端回應
1646- - 加入超時機制,避免無限等待
1647- - ** 清理** :移除未使用的變數和過時註解
1648- - 移除 ` realtime_time_write_index ` 、` sql_data_buffer ` 、` sql_buffer_max_size ` 等未使用變數
1649- - 清理過時和不必要的註解
1650- - 更新所有程式檔案的版本號為 6.0.2
1651-
1652- #### Version 6.0.0 (2025-01-06)
1653- - ** 重大更新** :移除 Master.ini,改用 csv.ini 和 sql.ini
1654- - 將 Master.ini 的功能拆分為兩個獨立的設定檔
1655- - csv.ini:包含 CSV 分檔間隔設定([ DumpUnit] 區段的 ` second ` 參數)
1656- - sql.ini:包含 SQL 上傳間隔設定([ DumpUnit] 區段的 ` second ` 參數)
1657- - 統一命名規則:兩個設定檔都使用 ` second ` 作為參數名稱
1658- - 前端設定頁面更新:移除 Master.ini 區段,新增 csv.ini 區段
1659- - 所有功能保持不變,僅改變設定檔結構
1660- - ** 改進** :統一表單欄位命名規則
1661- - CSV 分檔間隔欄位:` csv_second `
1662- - SQL 上傳間隔欄位:` sql_second `
1663- - 保持命名規則一致性
1664- - ** 新增** :網站 favicon 支援
1665- - 所有頁面(index.html、config.html、files.html)都使用 imCloud.jpg 作為 favicon
1666- - ** 改進** :前端顯示時間尺度設定為 10 秒
1667- - 前端圖表顯示最近 10 秒的資料(每個通道約 78,120 個資料點)
1668- - 後端緩衝區限制為 10 秒的資料量(234,360 個資料點,包含 3 個通道)
1669-
1670- #### Version 4.1.0 (2025-12-17)
1671- - ** 重大更新** :SQL 上傳邏輯重構
1672- - 改為暫存檔案機制:資料先寫入暫存 CSV 檔案,定時上傳
1673- - 建立暫存檔案目錄(` .sql_temp ` ),檔案命名格式:` {timestamp}_sql_temp.csv `
1674- - 新增定時上傳執行緒(` sql_upload_timer_loop ` ),每 ` sql_upload_interval ` 秒檢查並上傳
1675- - 上傳成功後自動刪除暫存檔案,並立即建立新暫存檔案(避免資料溢出)
1676- - 停止時檢查並上傳所有剩餘暫存檔案
1677- - 降低記憶體使用:資料直接寫入檔案,不佔用記憶體緩衝區
1678- - 資料持久化:即使程式異常終止,暫存檔案仍保留
1679- - ** 新增** :` sql_uploader.py ` 新增 ` upload_from_csv_file() ` 方法
1680- - 從 CSV 檔案讀取資料並批次上傳至 SQL 伺服器
1681- - 支援自動建立資料表(如果不存在)
1682- - 包含錯誤處理與重試機制
1683- - ** 更新** :技術文件更新
1684- - 更新 README.md 和 程式運作說明.md 以反映新的 SQL 上傳機制
1685-
1686- #### Version 4.0.0 (2025-12-17)
1687- - ** 改進** :程式碼註解完善
1688- - 為所有核心模組添加完整的中文註解
1689- - 所有函數和類別都有詳細的 docstring
1690- - 說明函數用途、參數、返回值、注意事項
1691- - 移除所有冗餘註解和步驟標記
1692- - 提升程式碼可讀性和可維護性
1693- - ** 改進** :技術文件更新
1694- - 更新 README.md 和 程式運作說明.md 以符合目前程式碼
1695- - 確保文件與實際程式碼功能一致
1696-
1697- #### Version 3.0.0 (2025-12)
1698- - ** 重大更新** :重構資料讀取邏輯
1699- - 實現 Normal Mode 和 Bulk Mode 自動切換機制
1700- - 根據緩衝區狀態(buffer_count)動態選擇讀取模式
1701- - Normal Mode:當 buffer_count ≤ 123 時,從 Address 0x02 讀取
1702- - Bulk Mode:當 buffer_count > 123 時,從 Address 0x15 讀取(最多 9 個樣本)
1703- - FIFO buffer size(0x02) 連同資料一起讀出,確保資料一致性
1704- - ** 改進** :讀取效率優化
1705- - 一次讀取 Header 和資料,減少 Modbus 通訊次數
1706- - 使用 ` _read_registers_with_header() ` 方法統一處理讀取邏輯
1707- - 參考 LabView 轉換版本(G.py)的實現方式
1708- - ** 改進** :程式碼清理
1709- - 移除所有冗餘註解和步驟標記
1710- - 簡化程式碼結構,提升可讀性
1711- - ** 改進** :即時資料顯示
1712- - 移除資料點數限制(原本限制 100000 個資料點)
1713- - 現在會保留並顯示所有資料
1714-
1715- #### Version 1.0.2 (2025-11-06)
1716- - ** 修復** :讀取中進入 config 頁面再回到主畫面時,狀態會自動恢復
1717- - ** 新增** :` /status ` API 端點,用於檢查資料收集狀態
1718- - ** 新增** :檔案瀏覽功能(` /files_page ` 、` /files ` 、` /download ` )
1719- - ** 優化** :智慧緩衝區更新機制,無活躍連線時不更新即時資料緩衝區
1720- - ** 新增** :前端狀態恢復功能(` checkAndRestoreStatus() ` )
1721- - ** 新增** :檔案瀏覽頁面(` files.html ` ),支援資料夾導航和檔案下載
1582+ ** 文件版本** :8.0.2
1583+ ** 作者** :王建葦
0 commit comments