IU2FRL ICOM CI-V Python Library: Controllo apparati ICOM con Python

La comunicazione con apparati ICOM tramite il protocollo CI-V può essere complessa senza gli strumenti giusti. La libreria IU2FRL ICOM CI-V Python Library semplifica questo processo, permettendo agli utenti di controllare e monitorare i propri dispositivi ICOM direttamente da Python.

Perché usare IU2FRL ICOM CI-V?

Questa libreria fornisce un’interfaccia semplice e intuitiva per interagire con le radio ICOM che supportano il protocollo CI-V, evitando di dover gestire manualmente la comunicazione seriale. Tra i vantaggi principali troviamo:

  • Compatibilità con diversi modelli: Supporta tutti i dispositivi ICOM con protocollo CI-V, inclusi IC-7300 e IC-706 MKII.
  • Interfaccia Python semplice: L’uso della libreria è intuitivo e ben documentato.
  • Debug avanzato: Include opzioni per il debug e simulazioni tramite una connessione seriale fittizia.
  • Facilità di espansione: Gli sviluppatori possono aggiungere il supporto per nuovi dispositivi in modo semplice.

Installazione

L’installazione della libreria è immediata usando il package manager pip:

pip install iu2frl-civ

Utilizzo della libreria

1. Importare il modulo

from iu2frl_civ.device_factory import DeviceFactory

2. Creare un oggetto “radio”

Per inizializzare un transceiver, basta creare un’istanza del dispositivo specificando i parametri di connessione:

radio = DeviceFactory.get_repository(
    radio_address="0x94",
    device_type=DeviceType.Generic,
    port="COM10",
    debug=True
)

Dove:

  • radio_address: Indirizzo del transceiver (es. 0x94 per IC-7300).
  • device_type: Tipo di dispositivo (es. DeviceType.IC7300).
  • port: Porta seriale di comunicazione.
  • debug: Attiva la modalità debug per visualizzare i comandi inviati (stampa i comandi della seriale nel output).

3. Eseguire comandi

Una volta creato l’oggetto, possiamo inviare comandi al dispositivo:

# Accendere il transceiver
radio.power_on()

# Leggere la frequenza attuale
freq = radio.read_operating_frequency()
print(f"Frequenza attuale: {freq}")

Se il dispositivo non supporta un comando, verrà generata un’eccezione:

  • NotImplementedError: Il comando non è disponibile per il dispositivo.
  • CivCommandException: Errore nella comunicazione tra la libreria e il transceiver.
  • CivTimeoutException: Timeout nella risposta.

Come aggiungere il supporto per un nuovo dispositivo

Gli sviluppatori possono facilmente estendere la libreria seguendo questi passaggi:

  1. Aggiungere un nuovo tipo di dispositivo nel file enums.py:
    class DeviceType(Enum):
        IC_7300 = 1
        IC_706_MK2 = 2
        NewDevice = 99  # Nuovo dispositivo
  2. Creare una nuova classe per il dispositivo nella cartella devices/:
    from ..device_base import DeviceBase
    
    class NewDevice(DeviceBase):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
        def get_frequency(self):
            return self.utils.send_command(b"\x1C\x01", b"\x00")
  3. Aggiornare il file pyproject.toml per registrare il nuovo dispositivo:
    [project.entry-points."iu2frl_civ.devices"]
    newdevice = "iu2frl_civ.devices.newdevice"
  4. Aggiungere un test nella cartella tests/ per verificare il funzionamento.

Codice sorgente

La libreria IU2FRL ICOM CI-V è uno strumento utile a chiunque voglia controllare un apparato ICOM tramite il linguaggio Python. Grazie alla sua semplicità d’uso e alla modularità, è ideale sia per radioamatori che per sviluppatori che vogliono integrare il supporto per nuovi dispositivi.

Se sei interessato, visita il repository su GitHub e contribuisci al progetto!

🔗 GitHub Repository

Post Disclaimer

Creative common license BY-NC_SA

Informazioni Importanti

Note generali: Le informazioni contenute in questo articolo sono di carattere informativo e rispecchiano le opinioni personali del autore. Tutte le guide nel sito vengono proposte "as it is" puramente a scopo didattico. L'utente che accetta di seguirne i passaggi si assume ogni responsabilità in caso di guasto/malfunzionamento o altro problema come conseguenza della modifica.

Link di affiliazione e contenuti promozionali: Nei post di iu2frl.it posso includere collegamenti a rivenditori. Posso ricevere una piccola commissione dal rivenditore se effettui un acquisto dopo aver fatto clic su uno di questi link. I post non sono espressamente sponsorizzati da rivenditori, editori, promotori o produttori, se non diversamente specificato chiaramente e tutte le decisioni editoriali sono prese esclusivamente dagli autori dei singoli articoli.

Contenuti riguardanti regolamenti e/o normative: Eventuali riferimenti a normative non costituiscono valore legale, si tratta di libere interpretazioni ed estratti di circolari corredate da eventuali commenti, si invitano tutti gli utenti a verificare la veridicità di tali informazioni sugli organi ufficiali di riferimento, nessuna colpa o responsabilità può essere data agli autori degli articoli.

Licenza di utilizzo: Tutti i contenuti vengono condivisi con licenza CC BY-NC-SA 4.0: Questa licenza consente ad altri di remixare, adattare e sviluppare i contenuti in modo non commerciale, purché accreditino l'autore originale e concedano in licenza le loro nuove creazioni con gli stessi termini. Per maggiori informazioni visitare il sito Creative Commons.

Important Informations

General notes: The information contained in this article is of an informative nature and reflects the personal opinions of the author. All the guides/tutorial on the website are offered "as it is" for educational purposes only. The user who agrees to follow the steps assumes all responsibility in case of failure/malfunctioning or other problem as a result of the modification.

Affiliate links and promotional products: In some posts of iu2frl.it I can include links to resellers. I can get a small commission from the reseller if you make a purchase after clicking on one of these links. The posts are not expressly sponsored by resellers, publishers, promoters or producers, unless otherwise clearly specified and all editorial decisions are made solely by the authors of the individual articles.

Contents about rules and laws: Some articles may contain portions or whole laws or rules regarding specific areas, these kind of content are meant to be indicative only, no responsability can be given to the authors. Always refer to official sources when looking for rules or laws.

Contents licenses: All the contents are published as CC BY-NC-SA 4.0: This license lets others remix, adapt, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms.. For more informations please visit Creative Commons website.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *