Új hozzászólás Aktív témák
-
sztanozs
veterán
python.org-rol telepitsd, a Store-os asszem ki van herelve.
3.10/3.11-et nyugodtan hasznalhatod, nem sok olyan csomag van, aminek regebbi verzio kellene.
3.12 meg erosen fejlesztes alatt van es a csomagok (foleg a nagyobbak) csak lassan lesznek tamogatottak az uj verziokon.fejlesztesre en a helyedben pycharm-ot hasznalnek, nem VS-t, de lehet, hogy ez csak preferencia kerdese...
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
kovisoft
őstag
Szerintem nem a setStates függvény az, amit keresel. Ha megnézed, a setStates és a GPO_off gyakorlatilag pont ugyanazt csinálja: kikapcsolja az összes bekonfigurált pint. És a setStates csak induláskor van egyszer meghívva, miután a konfig be lett olvasva.
Nem értem, hogy pontosan hogyan működik maga a program, hogyan lehet neki utasításokat adni, de szerintem a GPIO.output hívásokat kellene végignézned, hogy melyik lehet az, amelyik neked a lámpákat vezérli, és oda lehetne betenni egy olyan feltételt, hogy a zöldet ne kapcsolja, ha egyúttal a pirosat is kellene kapcsolnia. Ez valószínűleg a processTallyData lehet, mert az on_flash ránézésre egyetlen pint villogtat.
-
kovisoft
őstag
Én sem vágom, hogy itt ki kinek mikor mit küld, mit hív, stb. De szerintem az első cikus végzi a device_state-ben megkapott device-ok megadott pin-jeinek a bekapcsolását. És a powered_pins-ben összegyűjti azokat a pin-eket, amiket bekapcsolt. Utána a második ciklus pedig azt csinálhatja, hogy végigmegy az összes device összes pin-jén, és azokat kikapcsolja, amiket az első ciklus nem kapcsolt be. Azaz a végére pontosan azok lesznek bekapcsolva, amiknek bekapcsolva kell lenniük, az összes többi pedig ki lesz kapcsolva.
Tehát ha jól gondolom, akkor az első ciklusba tudnál betenni valami feltételvizsgálatot, hogy ha be tudod azonosítani azt az eszközt és a pin-eket, amik a zöld és piros lámpákat jelentik, akkor a zöldet ne kapcsolja be, ha a pirosat be kellene kapcsolni.
Nem tudom, meg lehet-e oldani mondjuk, hogy a konfigban hamarabb szerepeljen a piros lámpa pin-je, mert akkor mire a zöldre kerül a ciklus, addigra már lehetne látni, hogy a pirost be kell-e kapcsolni.
Ha ez nem járható út, akkor esetleg csinálhatsz az egész elé egy harmadik ciklust, ami kb. ugyanazt csinálja, mint a mostani első ciklus, de ténylegesen nem kapcsol pin-t, csak megjegyzi egy változóban, hogy a pirosat be kellene-e kapcsolni. És ha ez a változó be van állítva, akkor a bekapcsoló ciklusban kihagyja a zöldet.
Persze ehhez tudni kellene, hogy tényleg a processTallyData az a függvény, ami a kapcsolgatást végzi. Ezt mondjuk ki tudod próbálni, ha kikommentezed benne a bekapcsolást, és attól elmúlik a lámpák bekapcsolása.
-
kovisoft
őstag
Az if-ben dupla == az egyenlőségvizsgálat.
A json konfig mintában azt látom, hogy csak deviceId-k és azon belül pinNumber-ök vannak definiálva, ezzel a konfiggal leginkább csak hardkódolni tudod. De ha kiegészítheted a konfigot, akkor felvehetsz plusz attribútumokat, amikkel megadhatod, hogy az adott device vagy az adott device adott pin-je milyen másik device milyen pin-jével nem működhet együtt. Pl. a "pinNumber" mellé felvehetsz egy "conflictingDeviceId" és egy "conflictingPinNumber" mezőt. Ide beírod, hogy mivel nem tud együtt működni. A kódban pedig gpo["conflictingPinNumber"]-ként tudsz rá hivatkozni.
-
cigam
félisten
A két ciklus közé kellett ez a pár sor, és most úgy működik, ahogy szeretném.
# Ha a ch1 piros, kikapcsolja a ch1 zöldet
if 14 in powered_pins and 16 in powered_pins:
powered_pins.remove(16)
# Ha a ch2 piros, kikapcsolja a ch2 zöldet
if 4 in powered_pins and 26 in powered_pins:
powered_pins.remove(26)
# Ha a ch3 piros, kikapcsolja a ch3 zöldet
if 3 in powered_pins and 20 in powered_pins:
powered_pins.remove(20)
# Ha a ch4 piros, kikapcsolja a ch4 zöldet
if 2 in powered_pins and 21 in powered_pins:
powered_pins.remove(21)
Köszönöm a segítséget, útba igazítást!
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews