| .vs | ||
| SickBlazorApp | ||
| README.md | ||
| SickBlazorApp.slnx | ||
| SickEncoderDocument.pdf | ||
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)
│ ├── Models/ # PositionPdo, CanFrame, CanNodeState, ...
│ ├── Options/ # CanBusOptions
│ ├── Services/ # PcanCanService + interface
│ ├── Pages/ # sick.razor (trang chính)
│ └── Program.cs
├── docs/ # 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)