AqDGSDK_LoadVCD_VC_Sample - Update 2026/07/29
=============================================

[English]
1. Added DG4000B series support (DG4064B / DG4096B / DG4128B).
   - New model enums in AqDGVCDCvtCommonAPI.h:
       DG4064B = 0x4306A, DG4096B = 0x4309A, DG4128B = 0x4312A
   - Sample code now initializes with DG4064B by default (AqDGVCDCvtSDKDlg.cpp).
2. AqDGVCDCvt64.dll fixes (rebuilt 2026/07/29):
   - DG4000B model tables (device profile, pod count, per-model channel limit;
     e.g. a DG4064B VCD may use up to 48 channels).
   - VCD file paths containing non-ASCII characters (e.g. Chinese folder
     names) failed to open. Fixed.
   - Error reporting: "file not found / open failed" now returns
     ERR_VCD_OPEN_FILE_FAILS (0x05) instead of error 0; a failed conversion
     no longer returns the previous successful file size.
3. x64\Debug\ now contains a ready-to-run sample (AqDGVCDCvtSDK.exe,
   statically linked) together with all required DLLs:
   AqDGVCDCvt64.dll, DgRun64.dll, AqUSBMng64.dll,
   Qt5Core.dll, icudt53/icuin53/icuuc53.dll, msvcp120.dll, msvcr120.dll.
   Keep these DLLs in the same folder as your own executable as well.
4. API notes:
   - CvtVcd2Dgw() returns the SIZE IN BYTES of the generated DGW file.
     Return value 0 = conversion failed -> call GetLastDGError() for the
     reason (ERR_VCD_* codes in AqDGVCDCvtCommonAPI.h).
   - The generated DGW is written to the process CURRENT DIRECTORY and is
     named "<VCD file name>.DGW".
   - Calling sequence: InitDG(model, true) -> GetLastDGError() ->
     SetOutputVolt(mV, pod) -> CvtVcd2Dgw(vcdPath) -> DGOutput(NULL) ->
     poll GetDGStatus() & DG_WAVEFORM_SENDING -> StopDG() -> ShutdownDG().
   - IMPORTANT: call InitDG() only ONCE per process and reuse it for all
     conversions/outputs; call ShutdownDG() once when your program exits.
     Re-initializing after ShutdownDG() within the same process may fail to
     re-open the device until the process restarts. The sample code follows
     this pattern (init on first Run, shutdown in OnDestroy).
5. The 32-bit (Win32) binaries have been removed from this package;
   the sample is x64 only.

[中文]
1. 新增 DG4000B 系列支援 (DG4064B / DG4096B / DG4128B)。
   - AqDGVCDCvtCommonAPI.h 新增 model 列舉值:
       DG4064B = 0x4306A, DG4096B = 0x4309A, DG4128B = 0x4312A
   - 範例程式預設改用 DG4064B 初始化 (AqDGVCDCvtSDKDlg.cpp)。
2. AqDGVCDCvt64.dll 修正 (2026/07/29 重新編譯):
   - DG4000B 機種對應表 (機種參數、Pod 數量、依機種檢查通道上限;
     例: DG4064B 的 VCD 最多可用 48 通道)。
   - VCD 路徑含非 ASCII 字元 (例: 中文資料夾名稱) 會開檔失敗,已修正。
   - 錯誤回報: 「找不到檔案 / 開檔失敗」現在會回報
     ERR_VCD_OPEN_FILE_FAILS (0x05),不再回傳錯誤碼 0;
     轉檔失敗也不會再回傳前一次成功的檔案大小。
3. x64\Debug\ 內含可直接執行的範例程式 (AqDGVCDCvtSDK.exe,靜態連結)
   與所有必要 DLL:
   AqDGVCDCvt64.dll、DgRun64.dll、AqUSBMng64.dll、
   Qt5Core.dll、icudt53/icuin53/icuuc53.dll、msvcp120.dll、msvcr120.dll。
   自行開發的執行檔也請將這些 DLL 放在同一目錄。
4. API 說明:
   - CvtVcd2Dgw() 回傳值 = 產生之 DGW 檔案大小 (bytes)。
     回傳 0 = 轉檔失敗,請呼叫 GetLastDGError() 取得原因
     (錯誤碼 ERR_VCD_* 定義於 AqDGVCDCvtCommonAPI.h)。
   - 產生的 DGW 會寫在「程式目前工作目錄」,檔名為「<VCD檔名>.DGW」。
   - 呼叫順序: InitDG(model, true) -> GetLastDGError() ->
     SetOutputVolt(mV, pod) -> CvtVcd2Dgw(vcd路徑) -> DGOutput(NULL) ->
     輪詢 GetDGStatus() & DG_WAVEFORM_SENDING -> StopDG() -> ShutdownDG()。
   - 重要: 每個程式 (process) 只呼叫一次 InitDG(),之後重複使用即可;
     程式結束時再呼叫一次 ShutdownDG()。同一個程式內 ShutdownDG() 後
     再次 InitDG() 可能無法重新開啟裝置,需重啟程式才能復原。
     範例程式即採用此模式 (第一次 Run 初始化、關閉視窗時才釋放)。
5. 本包已移除 32 位元 (Win32) 版本,範例僅提供 x64。
