{"id":454,"date":"2025-02-08T18:10:12","date_gmt":"2025-02-08T17:10:12","guid":{"rendered":"https:\/\/www.f1rtd.com\/?p=454"},"modified":"2026-03-01T15:27:30","modified_gmt":"2026-03-01T14:27:30","slug":"exemple-dutilisation-ci-v-udp","status":"publish","type":"post","link":"https:\/\/www.f1rtd.com\/index.php\/2025\/02\/08\/exemple-dutilisation-ci-v-udp\/","title":{"rendered":"Exemple d&rsquo;utilisation CI-V \/ UDP"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"235\" height=\"151\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/code.png\" alt=\"\" class=\"wp-image-458\" style=\"width:170px;height:auto\"\/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-left\">Quand j\u2019avais d\u00e9crit mon petit montage Dual Icom CI-V to UDP\/IP, j\u2019avais promis un exemple d\u2019utilisation et c\u2019est ce que je vous propose ici. Le but de l\u2019exercice, c\u2019est juste de faire un tout petit programme en ligne de commande qui affiche en temps r\u00e9el la fr\u00e9quence de chaque transceiver. &nbsp;<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Du transceiver au r\u00e9seau&nbsp;:<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"234\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2024\/06\/2civ2udp.png\" alt=\"\" class=\"wp-image-60\" style=\"width:316px;height:auto\" srcset=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2024\/06\/2civ2udp.png 771w, https:\/\/www.f1rtd.com\/wp-content\/uploads\/2024\/06\/2civ2udp-300x91.png 300w, https:\/\/www.f1rtd.com\/wp-content\/uploads\/2024\/06\/2civ2udp-768x233.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n<\/div>\n\n\n<p>Mon <a href=\"https:\/\/www.f1rtd.com\/index.php\/2024\/06\/15\/dual-icom-ci-v-to-udp-ip\/\"><em>Dual Icom CI-V to UDP\/IP<\/em> <\/a>est donc configur\u00e9 avec les adresses de 2 de mes Icom&rsquo;s (IC-7300 et IC 9700) et se connecte automatiquement \u00e0 ma box d\u00e8s qu\u2019il est sous tension. Comme la valeur CI-V Transceive <em>(Menu -&gt; Set -&gt; Connectors -&gt; CI-V -&gt; CI-V Transceive)<\/em> de mes Icom est positionn\u00e9e \u00e0 ON (valeur par d\u00e9faut), tout changement de fr\u00e9quence ou de mode d\u2019un des transceivers est broadcast\u00e9e sur mon r\u00e9seau local, et bien s\u00fbr, toutes commande CI-V correctement format\u00e9e et envoy\u00e9 en UDP sur le port du <em>CI-V UDP<\/em> sera prise en compte par le transceiver concern\u00e9. A partir de l\u00e0, il suffit de se pencher sur la notice des commandes CI-V de ces appareil modernes pour se rendre compte qu\u2019il y a vraiment mati\u00e8re \u00e0 s\u2019amuser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Programmation&nbsp;:<\/h2>\n\n\n\n<p>Pour l\u2019exemple, on a juste besoin d\u2019un simple \u00e9couteur UDP bind\u00e9 sur le port du CI-V UDP. Chaque fois qu\u2019il va transmettre des donn\u00e9es, ce petit programme va les recevoir et les traiter pour identifier le poste qui les envoient et la fr\u00e9quence. &nbsp;Pour le langage de programmation, chacun peut faire avec ses habitudes. Un premier exemple en utilisant du JavaScript avec <a href=\"https:\/\/nodejs.org\/fr\">NodeJs<\/a>. C&rsquo;est simple, totalement portable et bigrement efficace.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"523\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprx.png\" alt=\"\" class=\"wp-image-455\" srcset=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprx.png 800w, https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprx-300x196.png 300w, https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprx-768x502.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>Cela se passe de commentaire, mais pour r\u00e9sumer, on ouvre un port UDP et on bind sur le port du CI-V UDP. Toutes les donn\u00e9es arrivent dans &lsquo;server.on&rsquo;. Ces donn\u00e9es son renvoy\u00e9es vers une premi\u00e8re fonction qui identifie le transceiver par son adresse puis dans une autre qui d\u00e9code la fr\u00e9quence. Alors bien sur, ce n&rsquo;est qu&rsquo;un exemple qui ne fait aucun contr\u00f4le, mais qui est un bon d\u00e9but pour se familiariser avec le format CI-V.<\/p>\n\n\n\n<p>Pour ceux qui pr\u00e9f\u00e8re Python, on peut aussi faire avec, mais ce n&rsquo;est pas vraiment une bonne id\u00e9e si on veut d\u00e9velopper une application plus cons\u00e9quente ou finalement tout va reposer sur des \u00e9v\u00e8nements asynchrones.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"425\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprxpy-1.png\" alt=\"\" class=\"wp-image-466\" srcset=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprxpy-1.png 412w, https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/udprxpy-1-291x300.png 291w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/figure>\n<\/div>\n\n\n<p>Pour les projet plus ambitieux, C# avec NET est \u00e0 mon sens la solution haut de gamme, mais pour l&rsquo;exemple, ce serait prendre un \u00e9l\u00e9phant pour \u00e9craser une mouche. On peut aussi faire en C avec l&rsquo;Arduino IDE et utiliser un autre ESP32 comme client avec un petit \u00e9cran spi ou lcd.<\/p>\n\n\n\n<p>Ces 2 exemples de codes sont disponible <a href=\"https:\/\/github.com\/F1RTD\/2civ1udp\">sur le github du projet<\/a> dans le dossier test.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"84\" height=\"80\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/idee.png\" alt=\"\" class=\"wp-image-457\"\/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading has-text-align-left\">Ca peut servir : <\/h2>\n\n\n\n<p>J&rsquo;ai plein d&rsquo;id\u00e9es pour que ce &lsquo;gadget&rsquo; me serve \u00e0 d&rsquo;autres choses plus utiles. le 9700 et le 7300 sont d&rsquo;excellents appareils, mais il y a beaucoup de chose que l&rsquo;on utilise pas ou peu tout simplement par ce que se balader dans des menus pour changer par exemple les basses ou les param\u00e8tres hpf\/lpf, ce n&rsquo;est pas le genre de truc que l&rsquo;on fait quand on fait des qso&rsquo;s qui ne durent que quelques minutes (ou secondes). Imaginez par exemple un petit boitier, fixe avec \u00e9cran ou sans fil genre t\u00e9l\u00e9commande, avec juste quelques boutons pour modifier ces param\u00e8tres plus directement. Allumer automatiquement le 9700 \u00e0 une heure pr\u00e9cise pour lui faire enregistrer le passage d&rsquo;un satellite. Piloter un s\u00e9lecteur d&rsquo;antennes ne serait ce que pour compenser l&rsquo;absence d&rsquo;une prise antenne s\u00e9par\u00e9 pour les bande HF et le 6m. Bref, les possibilit\u00e9s ne manque pas qu&rsquo;elles soit &lsquo;hardware&rsquo; externe ou software &#8230;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"95\" height=\"46\" src=\"https:\/\/www.f1rtd.com\/wp-content\/uploads\/2025\/02\/icom.png\" alt=\"\" class=\"wp-image-460\"\/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">CI-V<\/h2>\n\n\n\n<p>La liste des commandes CI-V de chaque appareil Icom se trouve dans le Full Manual. A noter que le Protocol CI-V est tr\u00e8s bien fait. Il existe depuis plus de 30 ans et \u00e9volue au fil du temps et de l&rsquo;arriv\u00e9 de nouvelles technologies.  Tout \u00e7a en gardant une compatibilit\u00e9 descendante et toujours la possibilit\u00e9 d&rsquo;utiliser une simple liaison s\u00e9rie half duplex sur 2 fils (prise remote). C&rsquo;est notamment ce qui me permet de m&rsquo;amuser avec tout ca, tout en gardant l&rsquo;USB raccord\u00e9 au PC pour les modes num\u00e9riques.<\/p>\n\n\n\n<p><\/p>\n<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-bottom-right\"><a href=\"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/posts\/454?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\" ><img decoding=\"async\" src=\"https:\/\/www.f1rtd.com\/wp-content\/plugins\/pdf-print\/images\/print.png\" alt=\"image_print\" title=\"Contenu imprim\u00e9\" \/><\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>Quand j\u2019avais d\u00e9crit mon petit montage Dual Icom CI-V to UDP\/IP, j\u2019avais promis un exemple d\u2019utilisation et c\u2019est ce que je vous propose ici. Le but de l\u2019exercice, c\u2019est juste de faire un tout petit programme en ligne de commande &hellip; <a href=\"https:\/\/www.f1rtd.com\/index.php\/2025\/02\/08\/exemple-dutilisation-ci-v-udp\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4,5],"tags":[],"class_list":["post-454","post","type-post","status-publish","format-standard","hentry","category-activite-radio","category-bricolouillage"],"_links":{"self":[{"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/posts\/454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/comments?post=454"}],"version-history":[{"count":15,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/posts\/454\/revisions"}],"predecessor-version":[{"id":548,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/posts\/454\/revisions\/548"}],"wp:attachment":[{"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/media?parent=454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/categories?post=454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.f1rtd.com\/index.php\/wp-json\/wp\/v2\/tags?post=454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}