Deploying to gh-pages from @ Klipper3d/klipper@96ea871b35 🚀
This commit is contained in:
@@ -1451,11 +1451,11 @@
|
||||
<li>klippy:ready - Ez az esemény az összes csatlakozási kezelő sikeres befejezése után generálódik. Jelzi, hogy a nyomtató átvált a normál műveletek kezelésére kész állapotba. Ebben a visszahívásban ne jelezzen hibát.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Ha hiba van a felhasználó konfigurációjában, mindenképpen hívja fel a figyelmet a <code>load_config()</code> vagy a "connect event" fázisokban. Használja a <code>raise config.error("my error")</code> vagy <code>raise printer.config_error("my error")</code> hibajelzést.</li>
|
||||
<li>Ha hiba van a felhasználó konfigurációjában, mindenképpen hívja fel a figyelmet a <code>load_config()</code> vagy a "connect event" fázisokban. Használd a <code>raise config.error("my error")</code> vagy <code>raise printer.config_error("my error")</code> hibajelzést.</li>
|
||||
<li>A "pins" modul segítségével konfigurálhat egy tűt a mikrokontrollerben. Ez általában a <code>printer.lookup_object("pins").setup_pin("pwm", config.get("my_pin"))</code>-hoz hasonló módon történik. A visszakapott objektumot ezután futásidőben lehet utasítani.</li>
|
||||
<li>Ha a nyomtató objektum definiál egy <code>get_status()</code> metódust, akkor a modul <a href="Status_Reference.html">állapotinformációt</a> exportálhat a <a href="Command_Templates.html">makrókon</a> és az <a href="API_Server.html">API Szerveren</a> keresztül. A <code>get_status()</code> metódusnak egy Python szótárat kell visszaadnia, amelynek kulcsai karakterláncok, értékei pedig egész számok, lebegő számok, karakterláncok, listák, szótárak, True, False vagy None. Használhatók tuplik (és nevesített tuplik) is (ezek az API-kiszolgálón keresztül történő eléréskor listaként jelennek meg). Az exportált "immutable" listákat és szótárakat. Ha tartalmuk megváltozik, akkor egy új objektumot kell visszaküldeni a <code>get_status()</code> parancsból, különben az API-kiszolgáló nem fogja észlelni a változásokat.</li>
|
||||
<li>Ha a modulnak hozzáférésre van szüksége a rendszer időzítéséhez vagy külső fájlleírókhoz, akkor a <code>printer.get_reactor()</code> segítségével hozzáférhetünk a globális "event reactor" osztályhoz. Ez a reactor osztály lehetővé teszi az időzítők ütemezését, a fájlleírók bemenetének várakozását, valamint a gazdakód "sleep" használatát.</li>
|
||||
<li>Ne használjon globális változókat. Minden állapotot a <code>load_config()</code> függvény által visszaadott nyomtató objektumban kell tárolni. Ez azért fontos, mert ellenkező esetben a RESTART parancs nem az elvártaknak megfelelően fog működni. Szintén hasonló okokból, ha bármilyen külső fájl (vagy foglalat) megnyílt, akkor mindenképpen regisztráljunk egy "klippy:disconnect" eseménykezelőt, és zárjuk be őket ebből a visszahívásból.</li>
|
||||
<li>Ne használj globális változókat. Minden állapotot a <code>load_config()</code> függvény által visszaadott nyomtató objektumban kell tárolni. Ez azért fontos, mert ellenkező esetben a RESTART parancs nem az elvártaknak megfelelően fog működni. Szintén hasonló okokból, ha bármilyen külső fájl (vagy foglalat) megnyílt, akkor mindenképpen regisztráljunk egy "klippy:disconnect" eseménykezelőt, és zárjuk be őket ebből a visszahívásból.</li>
|
||||
<li>Kerülje a más nyomtató objektumok belső tagváltozóinak elérését (vagy az aláhúzással kezdődő metódusok hívását). Ennek a konvenciónak a betartása megkönnyíti a jövőbeli változások kezelését.</li>
|
||||
<li>Javasoljuk, hogy a Python osztályok Python konstruktorában minden tagváltozóhoz értéket rendeljen. (És ezért kerülje a Python azon képességének kihasználását, hogy dinamikusan hozzon létre új tagváltozókat.)</li>
|
||||
<li>Ha egy Python változónak lebegőpontos értéket kell tárolnia, akkor ajánlott mindig lebegőpontos konstansokkal hozzárendelni és kezelni a változót (és soha ne használjunk egészértékű konstansokat). Például részesítsük előnyben a <code>self.speed = 1.</code> értéket a <code>self.speed = 1</code> értékkel szemben, és részesítsük előnyben a <code>self.speed = 2 értéket. * x</code> a <code>self.speed = 2 * x</code> helyett. A lebegőpontos értékek következetes használatával elkerülhetők a Python-típuskonverziók nehezen hibakereshető furcsaságai.</li>
|
||||
@@ -1477,7 +1477,7 @@
|
||||
<p>Hasznos lépések:</p>
|
||||
<ol>
|
||||
<li>Kezd a portolás során használni kívánt harmadik féltől származó könyvtárak azonosításával. Gyakori példa erre a "CMSIS" csomagolások és a gyártó "HAL" könyvtárak. Minden harmadik féltől származó kódnak GNU GPLv3 kompatibilisnek kell lennie. A harmadik féltől származó kódot a Klipper lib/ könyvtárba kell átvinni. Frissítse a lib/README fájlt azzal az információval, hogy hol és mikor szerezte meg a könyvtárat. A kódot lehetőleg változatlanul másold be a Klipper tárolóba, de ha bármilyen változtatásra van szükség, akkor ezeket a változtatásokat kifejezetten fel kell tüntetni a lib/README fájlban.</li>
|
||||
<li>Hozzon létre egy új architektúra alkönyvtárat az src/ könyvtárban, és adj hozzá kezdeti Config és Makefile támogatást. Használja a meglévő architektúrákat útmutatóként. Az src/simulator egy alapvető példát nyújt egy minimális kiindulási pontra.</li>
|
||||
<li>Hozzon létre egy új architektúra alkönyvtárat az src/ könyvtárban, és adj hozzá kezdeti Config és Makefile támogatást. Használd a meglévő architektúrákat útmutatóként. Az src/simulator egy alapvető példát nyújt egy minimális kiindulási pontra.</li>
|
||||
<li>Az első fő kódolási feladat a kommunikációs támogatás felállítása az alaplapnak. Ez a legnehezebb lépés egy új port esetében. Ha az alapvető kommunikáció már működik, a további lépések általában sokkal könnyebbek. A kezdeti fejlesztés során jellemzően UART típusú soros eszközt használunk, mivel az ilyen típusú hardvereszközöket általában könnyebb engedélyezni és vezérelni. Ebben a fázisban bőkezűen használja az src/generic/ könyvtárban található segédkódot (ellenőrizze, hogy az src/simulator/Makefile hogyan tartalmazza a generikus C kódot a felépítésben). Ebben a fázisban szükséges definiálni a timer_read_time() funkciót is (amely visszaadja az aktuális rendszerórát), de nem szükséges a timer irq kezelésének teljes támogatása.</li>
|
||||
<li>Ismerkedjen meg a console.py eszközzel (a <a href="Debugging.html">Hibakeresési dokumentumban</a> leírtak szerint), és ellenőrizze vele a mikrokontrollerrel való kapcsolatot. Ez az eszköz lefordítja az alacsony szintű mikrokontroller kommunikációs protokollt ember által olvasható formára.</li>
|
||||
<li>A hardveres megszakításokból történő időzítő küldés támogatásának hozzáadása. Lásd a Klipper <a href="https://github.com/Klipper3d/klipper/commit/970831ee0d3b91897196e92270d98b2a3067427f">commit 970831ee</a> példáját az LPC176x architektúra 1-5. lépéseivel.</li>
|
||||
@@ -1489,7 +1489,7 @@
|
||||
<p>További kódolási tippek:</p>
|
||||
<ol>
|
||||
<li>Kerülje a "C bitfields" használatát az IO regiszterek eléréséhez; részesítse előnyben a 32 bites, 16 bites vagy 8 bites egész számok közvetlen olvasási és írási műveleteit. A C nyelvi specifikációk nem határozzák meg egyértelműen, hogy a fordítónak hogyan kell megvalósítania a C bitmezőket (pl. endianness és bitkiosztás), és nehéz meghatározni, hogy milyen IO műveletek történnek egy C bitmező olvasásakor vagy írásakor.</li>
|
||||
<li>Inkább írjon explicit értékeket az IO regiszterekbe, minthogy olvasás-módosítás-írás műveleteket használjon. Azaz, ha egy olyan IO-regiszterben frissítünk egy mezőt, ahol a többi mező értékei ismertek, akkor előnyösebb a regiszter teljes tartalmát explicit módon kiírni. Az explicit írások kisebb, gyorsabb és könnyebben hibakereshető kódot eredményeznek.</li>
|
||||
<li>Inkább írjon explicit értékeket az IO regiszterekbe, minthogy olvasás-módosítás-írás műveleteket használj. Azaz, ha egy olyan IO-regiszterben frissítünk egy mezőt, ahol a többi mező értékei ismertek, akkor előnyösebb a regiszter teljes tartalmát explicit módon kiírni. Az explicit írások kisebb, gyorsabb és könnyebben hibakereshető kódot eredményeznek.</li>
|
||||
</ol>
|
||||
<h2 id="koordinata-rendszerek">Koordináta rendszerek<a class="headerlink" href="#koordinata-rendszerek" title="Permanent link">¶</a></h2>
|
||||
<p>A Klipper belsőleg elsősorban a nyomtatófej helyzetét követi cartesian koordinátákban, amelyek a konfigurációs fájlban megadott koordináta rendszerhez viszonyítva vannak. Ez azt jelenti, hogy a Klipper kód nagy része soha nem tapasztal koordináta rendszer változást. Ha a felhasználó az origó megváltoztatását kéri (pl. egy <code>G92</code> parancsal), akkor ezt a hatást a jövőbeli parancsok elsődleges koordináta rendszerre történő átváltásával érjük el.</p>
|
||||
|
||||
Reference in New Issue
Block a user