# Sick Encoder CAN Monitor Ứng dụng giám sát encoder Sick qua giao tiếp CAN (PCAN-USB), hiển thị vị trí thời gian thực, trạng thái node, heartbeat, PDO, và hỗ trợ thay đổi bitrate / node ID runtime. ## 🎯 Mục tiêu chính - Đọc và hiển thị vị trí encoder Sick (mm) từ PDO TPDO1 theo thời gian thực - Giám sát trạng thái node (Bootup, Pre-Operational, Operational, Stopped, Timeout) - Hỗ trợ thay đổi **bitrate** và **Node ID** runtime (bao gồm unlock + save to EEPROM) - Giao diện web đơn giản, responsive bằng **Blazor** ## 🏗️ Kiến trúc ┌─────────────────────┐ │ Blazor Web App │ (UI: Start/Stop, Bitrate, NodeID, Table frames) └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ PcanCanService │ (.NET service xử lý PCAN-Basic) │ - Init/Uninit │ │ - Read loop │ │ - NMT commands │ │ - Apply bitrate │ │ - Apply node ID │ └──────────┬──────────┘ │ ▼ ┌─────────────┐ │ Sick Encoder│ CAN (PCAN-USB) └─────────────┘ ## 🚀 Công nghệ sử dụng - **Backend**: .NET 10 (LTS) - **Frontend**: Blazor Web App (Server hoặc WebAssembly tùy chọn) - **CAN Driver**: Peak PCAN-Basic (PCAN-USB) - **Dependency Injection**: Microsoft.Extensions.Options - **OS hỗ trợ**: Windows (PC phát triển), có thể port sang Linux (mono hoặc .NET runtime) ## 📂 Cấu trúc thư mục (hiện tại) SickBlazorApp/ ├── SickBlazorApp/ # Project Blazor chính │ ├── Components/ # (nếu có reusable components) │ └── Pages/ # Home.razor, sick.razor(UI) │ ├── eds/ # EDS files của Sick encoder │ ├── Models/ # PositionPdo, CanFrame, CanNodeState, ... │ ├── Options/ # CanBusOptions │ ├── Services/ # PcanCanService + interface │ └── Program.cs ├── .pdf # Tài liệu └── README.md ## 🚦 Trạng thái hiện tại - Đã hoàn thành: - Kết nối PCAN-USB + đọc CAN frame liên tục - Parse heartbeat (node state + auto resume) - Xử lý Position PDO (raw → mm) - Thay đổi bitrate runtime (unlock + save EEPROM + reset) - Thay đổi Node ID runtime (unlock + save + reset) - UI Blazor hiển thị bảng frame, trạng thái node, vị trí mm - Đang phát triển: - Cải thiện UI/UX (loading state, error message, reconnect) - Thêm logging chi tiết - Hỗ trợ nhiều channel PCAN (nếu cần)