Deploying to gh-pages from @ Klipper3d/klipper@3bd0be40d5 🚀

This commit is contained in:
KevinOConnor
2023-05-04 00:03:34 +00:00
parent 1dbb07fa83
commit c3d0aece71
45 changed files with 609 additions and 614 deletions

View File

@@ -1516,19 +1516,19 @@ queue_step oid=7 interval=7458 count=10 add=331
queue_step oid=7 interval=11717 count=4 add=1281
</code></pre></div>
<p>Consultez le document <a href="MCU_Commands.html">commandes mcu</a> pour plus d'informations sur les commandes disponibles. Voir le document <a href="Debugging.html">deboguage</a> pour plus d'informations sur la façon de traduire un fichier G-Code en commandes de microcontrôleur lisibles.</p>
<p>Cette page fournit une description de haut niveau du protocole de communication de Klipper lui-même. Il décrit comment les messages sont déclarés, codés au format binaire (le schéma de "compression") et transmis.</p>
<p>L'objectif du protocole est de permettre un canal de communication sans erreur entre l'hôte et le microcontrôleur qui soit à faible latence, à faible bande passante et à faible complexité pour le microcontrôleur.</p>
<p>Voir le document <a href="MCU_Commands.html">commandes mcu</a> pour plus d'informations sur les commandes disponibles. Voir le document <a href="Debugging.html">deboguage</a> pour plus d'informations sur la façon de traduire un fichier G-Code en commandes de microcontrôleur lisibles (par l'homme).</p>
<p>Cette page fournit une description de haut niveau du protocole de communication de Klipper. Elle décrit comment les messages sont déclarés, encodés au format binaire (le format de "compression") et transmis.</p>
<p>L'objectif du protocole est de permettre un canal de communication sans erreur entre l'hôte et le microcontrôleur avec une faible latence, une faible bande passante et une faible complexité pour le microcontrôleur.</p>
<h2 id="interface-du-micro-controleur">Interface du micro-contrôleur<a class="headerlink" href="#interface-du-micro-controleur" title="Permanent link">&para;</a></h2>
<p>Le protocole de transmission Klipper peut être considéré comme un mécanisme <a href="https://en.wikipedia.org/wiki/Remote_procedure_call">Appel de procédure à distance</a> entre le micro-contrôleur et l'hôte. Le logiciel du microcontrôleur déclare les commandes que l'hôte peut invoquer ainsi que les messages de réponse qu'il peut générer. L'hôte utilise ces informations pour ordonner au microcontrôleur d'effectuer des actions et d'interpréter les résultats.</p>
<p>Le protocole de transmission Klipper peut être considéré comme un mécanisme d' <a href="https://en.wikipedia.org/wiki/Remote_procedure_call">Appel de procédure à distance</a> entre le microcontrôleur et l'hôte. Le logiciel du microcontrôleur déclare les commandes que l'hôte peut invoquer ainsi que les messages de réponse qu'il peut générer. L'hôte utilise ces informations pour ordonner au microcontrôleur d'effectuer des actions et d'interpréter les résultats.</p>
<h3 id="declaration-des-commandes">Déclaration des commandes<a class="headerlink" href="#declaration-des-commandes" title="Permanent link">&para;</a></h3>
<p>Le logiciel du microcontrôleur déclare une "commande" en utilisant la macro DECL_COMMAND() dans le code C. Par exemple:</p>
<div class="highlight"><pre><span></span><code>DECL_COMMAND(command_update_digital_out, &quot;update_digital_out oid=%c value=%c&quot;);
</code></pre></div>
<p>Ce qui précède déclare une commande nommée "update_digital_out". Cela permet à l'hôte "d'appeler" cette commande qui entraînerait l'exécution de la fonction C command_update_digital_out() dans le microcontrôleur. Ce qui précède indique également que la commande prend deux paramètres entiers. Lorsque le code C command_update_digital_out() est exécuté, un tableau contenant ces deux entiers lui sera transmis - le premier correspondant à 'oid' et le second correspondant à 'value'.</p>
<p>En général, les paramètres sont décrits avec une syntaxe de style printf() (par exemple, "%u"). Le formatage correspond directement à une vue "lisible" des commandes (par exemple, "update_digital_out oid=7 value=1"). Dans l'exemple ci-dessus, "value=" est un nom de paramètre et "%c" indique que le paramètre est un entier. En interne, le nom du paramètre n'est utilisé que comme documentation. Dans cet exemple, le "%c" est également utilisé comme documentation pour indiquer que l'entier attendu a une taille de 1 octet (la taille de l'entier déclaré n'a pas d'impact sur l'analyse ou l'encodage).</p>
<p>La construction du micrologiciel du microcontrôleur collectera toutes les commandes déclarées avec DECL_COMMAND(), déterminera leurs paramètres et s'arrangera pour qu'elles soient appelables.</p>
<p>En général, les paramètres sont décrits avec une syntaxe de style printf() (par exemple, "%u"). Le formatage correspond directement à une vue "lisible" (par un Humain) des commandes (par exemple, "update_digital_out oid=7 value=1"). Dans l'exemple ci-dessus, "value=" est un nom de paramètre et "%c" indique que le paramètre est un entier. En interne, le nom du paramètre n'est utilisé que comme documentation. Dans cet exemple, le "%c" est également utilisé comme documentation pour indiquer que l'entier attendu a une taille de 1 octet (la taille déclarée de l'entier n'a pas d'impact sur l'analyse ou l'encodage).</p>
<p>La compilation du micrologiciel du microcontrôleur collectera toutes les commandes déclarées avec DECL_COMMAND(), déterminera leurs paramètres et s'arrangera pour qu'elles soient appelables.</p>
<h3 id="declaration-des-reponses">Déclaration des réponses<a class="headerlink" href="#declaration-des-reponses" title="Permanent link">&para;</a></h3>
<p>Pour envoyer des informations du microcontrôleur à l'hôte, des "réponses" sont générées. Celles-ci sont à la fois déclarées et transmises à l'aide de la macro C sendf(). Par example:</p>
<div class="highlight"><pre><span></span><code>sendf(&quot;status clock=%u status=%c&quot;, sched_read_time(), sched_is_shutdown());