5.9 KiB
GrifoScope Compatibility Mode - Quick Start Guide
✅ Implementazione Completata
PyBusMonitor1553 ora supporta GRIFOSCOPE_MODE per compatibilità totale con il radar server.
🎯 Cosa è Stato Implementato
-
B-Request Format ✅
- B-messages inviate con
REQUEST_MODE = True - Payload vuoto (0 bytes data) per richieste al radar
- tr=1 (expect RT to reply), wc=N (word count impostato)
- B-messages inviate con
-
Multi-Message Frame ✅
- Tutti i messaggi in un UNICO datagram UDP
- A1-A8 (comandi) + B1-B11 (richieste) in singolo pacchetto
- Frame rate: 25 Hz (40ms period) come GrifoScope
-
GrifoScope Mode Activation ✅
- Flag ambiente
PYBM_GRIFOSCOPE_MODE=1 - Compatibilità con porte GrifoScope (61553/51553)
- Formato frame identico a qg1553overudp.cpp
- Flag ambiente
🚀 Come Usare GRIFOSCOPE_MODE
✅ GRIFOSCOPE_MODE è ATTIVO di default!
Basta avviare l'applicazione normalmente:
python -m pybusmonitor1553
Il software è già configurato per comunicare esattamente come GrifoScope.
🔧 Disabilitare GrifoScope Mode (opzionale)
Se per qualche motivo vuoi usare la modalità multi-rate ottimizzata, apri pybusmonitor1553/core/scheduler.py:
# Linea ~23
GRIFOSCOPE_MODE = False # Cambia da True a False
📊 Differenze tra Modalità
GrifoScope Mode (GRIFOSCOPE_MODE=True)
Frame @ 25 Hz (40ms):
UDP Header (64B)
├─ A1 (command, payload)
├─ A2 (command, payload)
├─ A3 (command, payload)
├─ A4 (command, payload)
├─ A5 (command, payload)
├─ A7 (command, payload)
├─ A8 (command, payload)
├─ B1 (request, NO payload) ← Polling
├─ B2 (request, NO payload)
├─ ...
└─ B11 (request, NO payload)
End Marker (0x5315)
✅ Banda: ~103 kbps
✅ Compatible con GrifoScope
✅ Single UDP packet per ciclo
Multi-Rate Mode (GRIFOSCOPE_MODE=False, default)
Messaggi separati a rate diversi:
A1, A3, A7, A8, B6 @ 6.25 Hz (160ms)
A2, B7 @ 25 Hz (40ms)
A4, A5, B4, B5 @ 50 Hz (20ms)
B8 @ 1.56 Hz (640ms)
⚠️ Banda: ~172 kbps
✅ Ottimizzato per efficienza
❌ Non compatibile con radar che si aspetta frame singolo
🔧 Test di Verifica
1. Test Formato B-Request
python tools/test_b_request_format.py
Output atteso:
✅ TEST 1 PASSED: A-messages have payload
✅ TEST 2 PASSED: B-messages have NO payload (REQUEST mode)
✅ TEST 3 PASSED: Mixed frames work correctly
2. Test GrifoScope Mode
python tools/test_grifoscope_mode.py
Output atteso:
✅ ALL TESTS PASSED - GRIFOSCOPE MODE WORKS CORRECTLY
Summary:
- Single frame contains all messages ✅
- A-messages have payload (commands) ✅
- B-messages have NO payload (requests) ✅
- Frame rate: 25 Hz (40ms period) ✅
- Compatible with GrifoScope behavior ✅
3. Test con Radar Simulato
# Terminal 1: Avvia responder simulato
python tools/simple_rt_responder.py
# Terminal 2: Avvia PyBusMonitor (GrifoScope mode già attivo di default)
python -m pybusmonitor1553
📋 Checklist Pre-Radar Reale
Prima di connetterti al radar vero, verifica:
- GRIFOSCOPE_MODE attivo di default (✅ già configurato!)
- Porte corrette: RX=61553, TARGET=51553
- IP radar configurato in
PYBM_TARGET_IP(se necessario) - Test
test_b_request_format.pypassato - Test
test_grifoscope_mode.pypassato - GrifoScope NON in esecuzione (conflitto porte)
🐛 Troubleshooting
Problema: Radar non risponde
Soluzione:
# Verifica GRIFOSCOPE_MODE attivo (dovrebbe essere True di default)
python -c "from pybusmonitor1553.core import scheduler; print(scheduler.GRIFOSCOPE_MODE)"
# Output atteso: True
# Verifica porte
netstat -an | findstr "61553" # Windows
netstat -an | grep "61553" # Linux
Problema: Frame troppo grande
Soluzione: Riduci messaggi inviati modificando scheduler.py:_loop_grifoscope():
# Invia solo messaggi essenziali (come GrifoScope originale)
essential_messages = [
self.controller.msg_a1,
self.controller.msg_a2,
self.controller.msg_a3,
self.controller.msg_a4,
self.controller.msg_a5,
self.controller.msg_b6,
self.controller.msg_b7,
]
Problema: Bandwidth troppo alta
Soluzione: GrifoScope mode usa ~103 kbps vs ~172 kbps multi-rate.
Se bandwidth è problema, usa multi-rate mode (default).
📖 Documenti di Riferimento
- Piano Migrazione: doc/GrifoScope-Migration-Plan.md
- Note ICD: doc/ICD-Implementation-Notes.md
- Architettura: doc/Technical-Architecture.md
🎓 Come Funziona (Per Sviluppatori)
REQUEST_MODE Flag
# lib1553/message_base.py
class MessageBase:
REQUEST_MODE = False # True per B-messages (richieste)
# lib1553/messages/msg_b7.py
class MsgB7(MessageBase):
REQUEST_MODE = True # Invia senza payload
PacketBuilder Logic
# core/packet_builder.py
if request_mode:
# GrifoScope B-request: tr=1, wc=N, NO data bytes
# Radar risponderà con payload pieno
pass # Skip payload
elif tr == 0:
# BC->RT command: invia payload
payload_bytes = msg.pack(word_count=wc)
Scheduler Modes
# core/scheduler.py
if GRIFOSCOPE_MODE:
# Invia TUTTI i messaggi ogni 40ms (25 Hz)
self._loop_grifoscope()
else:
# Multi-rate: ogni messaggio al suo rate ICD
self._loop_multirate()
✨ Status Progetto
Completato: 85% → 95% 🎉
- ✅ B-Request format (Task 2)
- ✅ Multi-Message frame (Task 3)
- ✅ GrifoScope compatibility mode
- ✅ Test suite completa
- ⏳ Test con radar reale (da fare)
Tempo stimato rimanente: 1-2 giorni per test/validazione radar reale
Ultima modifica: 2025-12-15
Autore: AI Assistant + Team PyBusMonitor
Versione: 1.0 (GrifoScope Compatible)