Keresés

Új hozzászólás Aktív témák

  • atesss

    addikt

    Üdv !
    Egy kis segítségre lenne szükségem:
    Találtam egy cuTorrent nevű kiegészitést a uTorrenthez (illetve a WebUI-jához), amivel egy bat fájlon keresztül le tudnám állítani a seed-elést, ha elérem a napi 5GB-os feltöltési limitet (az adatforgalmat figyelő program már megvan).
    Hiába keresgéltem, csak Pythonos forráskódot találtam:
    [link] és letöltgető innen: [link]
    Na ezt le kéne fordítani még, Windows alá...
    Próbálkoztam is vele, de amilyen fejlesztői környezetet letöltöttem hozzá (a python.org -ról), azzal nem sikerült boldogulni, pl. rögtön sytax errort dobott.
    Tudnátok ajánlani valamilyen grafikus felületű (igazából a Visual Studiohoz hasonló lenne a legjobb, mivel abban tanultam C-t ) SDK-t ? Meg valami tutorial is jó lenne, hogy hogyan is működik ez.

    Vagy ha valaki meg tudná tenni nekem, hogy lefordítja a programot Windows alá, és elküldi nekem, azt nagyon megköszöném. :R

    Mégiscsak egyszerűbb lenne, mert ha valakinek fent van az SDK, és tudja is használni, akkor kb. 1 perc alatt le lehet fordítani gondolom, nekem meg akár több óra is lehet, mire tényleg kiismerem, hogy hogyan is kellene ezt csinálni.

  • atesss

    addikt

    válasz cousin333 #31 üzenetére

    A fordítással a compile-ra gondoltam, exe-t gyártani a forrásból (ami jelen esetben nem is egy fájl, hanem több mappában jópár fájl; de project fájl meg nincs ami Visual C-nél lenne :F ).
    És akkor ehhez a forráshoz a régebbi változatú Python fog kelleni ?

    És milyen fejlesztőkörnyezetet tudnál ajánlani, aminek valamilyen jól használható, a Microsoft Visual C-hez hasonló kialakítású kezelőfelülete van ?
    Vagy ponthogy abban bonyolultabb lenne így elsőre ?

    Találtam egy ilyet: [link]
    Itt Eclipse + PyDev plug-in-ról írnak, de itt van egy csomó más SDK neve is: [link]
    De elöször akkor a python.org-ról a "Python 2.6.2 Windows installer (Windows binary -- does not include source) ", meg a Java Runtime enviroment kell, nem ?

    A Python meg interpretált nyelv, nem kell feltétlenül lefordítani...
    "This program has been tested with python2.4 on both linux and OSX (in theory it should work on any system that has python2.4+ installed). "
    Én csak ebből gondolom, hogy menne Windows XP-n is, egyébként nem értek a Pythonhoz.

  • atesss

    addikt

    Üdv !
    Pár kicsi pl. indító-ellenőrző célú, illetve Raspberry GPIO bemenetet kezelő scriptet írtam vagy "összeollóztam" Pythonban már az elmúlt években, de nemrég kezdtem el komolyabban, úgymond teljes rendszerben is tanulni.
    Eddig elsősorban C-t és AVR-C-t tanultam egyetemen + azt tovább magasabb szintre is hobby célból, de az elmúlt pár évben sajnos keveset használtam.
    Most - a Python "alapok" tanulásával kb. párhuzamosan - a munkámhoz kapcsolódóan egy szabadulószobában használandó "üzenetrögzítő" játékelemet kezdtem el programozni Raspberry-re. GUI nem lesz erre a célra (sőt kijelző sem lesz rajta). Egyelőre python2-ben kezdtem el, de később majd biztos átváltom python3-ra.

    Elég sok része már működik is, de most egy területen elakadtam :
    Hangfájlokat indítanék RFID-kártyák érzékelésére (nyelvenként kb. 5db fájl, kb. 10-25s, jelenleg wav). VLC-vel tenném, ezt azért is lenne célszerű, mert pl. omxplayer-el ellentétben elég könnyen átemelhető majd PC-s környezetbe is máshoz.
    Első körben olyat csináltam, hogy minden egyes hangfájlhoz tartozik egy shell script amiben egy külön terminal-al indul egy teljes VLC player. A leállítást pedig os.system("pkill vlc") - vel csináltam.
    A hangfájlok hosszát itt még egy külön config fájlból töltöm be
    (az audio erősítőt is kapcsolom ennek függvényében).
    Ugyan működik, de hát nem egy túl szép és erőforrás-gazdaságos megoldás...

    Az lenne a jó, ha nyelvváltáskor betölteném mind az 5db hangfájlt egy lejátszási listába,
    és utána már csak abból dolgoznék.
    Találtam is egy vlc-ctrl csomagot [link]
    Ezt nagyon könnyű használni, de sajnos eléggé limitált, a dokumentációja meg nulla.
    Eléggé körülményesnek tűnik vele akár csak egy lejátszási lista pl. adott elemére lépni.
    Helyette az úgymond "hivatalos" VLC Python bindings-et lenne jobb használnom: [link]
    Ez viszont bonyolultabb, már az indítással is bajban vagyok elsőre.
    Nekem az jött le, hogy itt kb. az ablakot is nekem kellene létrehoznom.
    Nem tudtok erre valamilyen elsőre is egyszerűbben használható megoldást ?

    [ Szerkesztve ]

  • atesss

    addikt

    válasz sztanozs #2743 üzenetére

    A VLC esetében arra gondoltam, hogy az ezzel most megszerzett tapasztalatokat később majd kibővítve bonyolultabb projektekben is hasznosítani tudnám.
    (Pl. van olyan tervem is, hogy majd egy saját, jól testreszabható, eseményvezérelhetőséget is tudó CCTV-kamerakép néző alkalmazást csinálnék, első körben szabadulószobák számára. VLC-vel, és elsősorban RTSP-vel.)
    De mondjuk ez egy más volumenű projekt, lehet akkor mégsem most állnák neki a VLC vezérlésbe való beletanulásnak.

    Az mplayer-t úgy indítanám akkor Python-ból, hogy az minden lejátszáshoz létrehozna egy terminal ablakot (amit aztán be is zárna) ?
    Vagy pedig ez nem szükséges ?

    Egy hátránya lehet még esetleg az mplayer-nek.
    Azzal hogy "nem lesz GUI/képernyő" nem mondtam teljesen igazat.
    Tervbe van egy olyan, hogy ugyanez a Raspberry párhuzamosan csinálna egy másik feladatot, egy TV-képernyőn való megjelenítést is (képcsöves a hely tematikája miatt, analóg CVBS-en). Ez elsősorban egy visszaszámláló (videofájl) lenne ami mindig fut, de külön-külön beküldött képek vagy rövid hangok/videók is lehetnének akár amik ezt rövid időre megszakítják.
    Ez a terv persze későbbi, de a diktafon funkciót már most úgy csinálnám meg hogy ezzel ne ütközhessen.
    A két külön alkalmazás hangjának fizikai elválasztását kétféleképpen is megoldhatom:
    1. A sztereo egyik és másik csatornája. 2. Az egyik funkció a beépített hangkártyával megy, a másik pedig egy I2S-es kis erősítővel.
    (Illetve 3. USB-s hangkártya, bár ezzel elektronikailag rossz tapasztaltaim vannak (áthallás), úgyhogy ezt kerülném. 4. relé a hangjelre, de ezt is kerülném.)
    Ezt a TV-s megjelenítést a Pi Presents [link] vezérlésével/testreszabásával terveztem megcsinálni.
    Az hogy más fut GUI-val a háttérben, nem probléma, mert átrakom a PiPresents-et Alwas On Top-ra.
    De viszont ez a toolkit az audio fájlok lejátszását mplayer-el csinálja, legalábbis alapból.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz justmemory #2746 üzenetére

    Most próbálgatom az mplayer-t.
    Egy dolog ezzel az indítással viszont már elsőre kijött mint probléma:
    Így a főprogram futása megakad, amíg fut az mplayer.
    Hogy ne így legyen, ahhoz subprocess-ként kellene indítanom ?

    Úgy viszont onnantól meg kicsit nehezebb lesz kézbentartani a futását. (Nem kapok közvetlen visszajelzést mikor végzett, azt is nehezebben tudhatom meg épp hol tart a lejátszással, nehezebb instant leállítani, stb.)
    Hogy ezek is működjenek megbízhatóan, ahhoz jól gondom hogy legelőször is a process ID-t kellene lementenem akkor amikor indítom ?

  • atesss

    addikt

    válasz justmemory #2748 üzenetére

    Subprocess-re én akkor még nem így gondoltam. De utánanéztem, és így kellene, igen.
    Csak ez így már összességében azért bonyolultabb.

    "Nem feltétlenül kell a process ID-t elmenteni, meghívhatod a pidof-ot "
    Ami tulajdonképpen azt csinálja, nem ?

    Jelenleg eddig jutottam:
    import threading
    def mplayer(Patch):
        startcommand = 'mplayer ' + Patch
        os.system(startcommand)
        return

    threads = []
    WavPathname = '/home/pi/  ...  _HU_1.wav'
    mplayerThread = threading.Thread(target=mplayer, args=(WavPathname,))
    threads.append(mplayerThread)
    mplayerThread.start()
    os.system("pidof mplayer")
    mplayer_pid = subprocess.check_output(["pidof", "mplayer"])
    print "A futo mplayer folyamatazonositoja: " + str(mplayer_pid)

    Ami hátrány, hogy most kétszer íródik ki a PID a terminal-ban.
    Olvastam [link] hogy Python 3 alatt már van valami más megoldás is erre, de még nem váltottam át rá.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz justmemory #2750 üzenetére

    pi@raspberrypi4:~ $ python
    Python 2.7.16 (default, Oct 10 2019, 22:02:15) 
    [GCC 8.3.0] on linux2

    Hmm, lehet az oprendszer adja a különbséget.

    Logolásra milyen modult tudtok ajánlani ?
    Én most egy ilyen infót találtam rá: [link]
    Inkább már Python3-alapú legyen.

    A threading-ről is van itt fent egy elég jónak tűnő tutorial: [link] , ez alapján csináltam a saját fenti kódomat is.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz cog777 #2754 üzenetére

    Köszi a tippet, megnézem.

    Viszont az jutott még eszembe, hogy ha az eszközöm egy Raspberry Pi, akkor a logolásnál az SD-kártya írási terhelésére azért lehet oda kellene figyelni.
    Vagy lehet valami speciálisabb beállítás / másik modul, ami - ugyan adott esetben lassabb vagy más szempontból hátrányos - de cserébe jobban kíméli az SD-kártyát ?

  • atesss

    addikt

    Üdv !
    Raspberry Pi-n használok egy AD átalakítót, és az eddig Píthon kódomat most megpróbáltam kicsit úgy átalakítani - a jobb átláthatóság érdekében - hogy minden változó csak a szükséges függvényben legyen érvényes.
    Illetve a hardverhez kapcsoló adat (jelen esetben pl. a csatornáknak a címe) is csak az adott hardver-kezelő függvényben legyen megadva.
    Viszont így eléggé "körülményes" lett a kód végére:
    Main függvény releváns részei:
    I2C_address = 0x48
    ADCCh0_sum_1s = ADCCh0_sum_1s + adc_measure("A0")
    ADCCh1_sum_1s = ADCCh1_sum_1s + adc_measure("A1")
    ADCCh2_sum_1s = ADCCh2_sum_1s + adc_measure("A2")
    ADCCh3_sum_1s = ADCCh3_sum_1s + adc_measure("A3")
    És a két releváns függvényem:
    def adc_measure(channel_name):
      global I2C_address
        channel = get_channel_from_name(channel_name)
        try: 
          bus.write_byte(I2C_address,channel)
        except IOError: 
            pass
        try: 
          adc_dummyread = bus.read_byte(I2C_address)
        except IOError: 
            pass
        time.sleep(0.001)
        try: 
          adc_value = bus.read_byte(I2C_address)
        except IOError: 
            pass
        # print("ADC readed value on Channel Name",channel_name, "(Hexa-ID: ", hex(channel),"): ",adc_value)
        # print('------')
        time.sleep(0.001)
        return adc_value
       
    def get_channel_from_name(channel_name):
        A0 = 0x40
        A1 = 0x41
        A2 = 0x42
        A3 = 0x43
        if channel_name == "A0":
            channel = A0
        if channel_name == "A1":
            channel = A1
        if channel_name == "A2":
            channel = A2
        if channel_name == "A3":
            channel = A3
        # print("Non-converted channel name:  ",channel)
      return channel
    A kikommentezett print-eket csak debug célra használtam.

    A "névkonvertáló" függvényt hogyan tudnám elhagyni ?
    (Ha viszont direkt feltétel, hogy nem akarom a main-ben megadni az A0, A1, A2, A3 -at.)
    Mert én hiába kerestem, nem találtam olyan függvényt, amivel ezt a funkciót egyszerűbben végre tudnám hajtani. Hogyan lehetne kiváltani az " = A0" ... " = A3" értékadó sorokat ?

    [ Szerkesztve ]

  • atesss

    addikt

    válasz Silεncε #2818 üzenetére

    Hát még csak nemrég kezdtem tanulni a Pythont, szóval a dictionary-t még nem ismertem.
    De utánanéztem, köszi, nem tűnik rossznak, megoldhatja a problémát.
    Viszont csak du. tudom majd kipróbálni (ha a - már a végleges helyére beépített - hardver előtt leszek).
    (Lehetne szimulálni, hogy a HW-lekérdező rutinba beírni egy fix érték-behelyettesítést, ha IOError van, de egyelőre nem csináltam meg. Tekintve hogy vannak további, közvetlen GPIO műveletek is a teljes programban, azoknak a függvényeit meg szintén csak részlegesen tudnám tesztelni a hardver nélkül, nem biztos hogy van értelme.)

    Viszont amit te írtál formula, az így nem tűnik a teljesnek. Azok alapján amit neten találtam, én kb. egy ilyen teljes kódot képzelnék el:
    def adc_measure(channel_name):
        channel_dictionary = {
            'A0': 0x40,
            'A1': 0x41,
            'A2': 0x42,
            'A3': 0x43
        }
        ...
        bus.write_byte(I2C_address, channel_dictionary.get(channel_name))
    És akkor ezen a HW-kezelő függvényen kívül semmi más nem kell, csak a main-ben a meghívás az eddigiek szerint:
    ADCCh0_sum_1s = ADCCh0_sum_1s + adc_measure("A0")
    Vagy ide akkor így nem is kellene az idézőjel az A0-hoz ? (amúgy az lenne a tényleg szép megoldás, ha nem kellene).

  • atesss

    addikt

    Dupla...
    Egy warning-ot írt ki amikor be akartam küldeni a hsz-t, de aztán a programkód formázások helyén kicsit szerkesztve már elfogadta. Na de az meg nem mondta, hogy mégis elsőre is már elküldte...

    [ Szerkesztve ]

  • atesss

    addikt

    Felbuzdulva azon, hogy - Silεncε segítségével - tök jól működik ez az előző, dictionary-s megoldás, gondoltam hogy egy következő feladatban is ezt használnám adatszerkezetnek.
    Adott egy szintén HW-kezelő library (PCF8574 I2C-s I/O modul), ami egy port 8 pinjének állapotát egy array-ben adja vissza (i2c_io_readed_array = pcf.port).
    Ezen még kicsit dolgozok (megfordítom a tömböt, és negálom az elemeket), de végeredményben egy ugyanolyan, 8 elemű, boolean tagokból álló tömböt kapok (pl. [True, True, True, True, False, True, False, False] ).
    Arra, hogy fizikailag melyik pin-re mi van kötve, - az előző feladathoz hasonló okokból - most is csináltam - az ezt kezelő függvényen belül - egy "táblázatot" egy dictionary-vel:
        i2c_io_port_dictionary = {
            1: 'Switch1',
            2: 'Switch2',
            3: 'Switch3',
            4: 'Switch4',
            5: 'Button1',
            6: 'Button2',
            7: '[Not-Connected7]',
            8: '[Not-Connected8]'
        }

    És az aktuális értékek pedig:
    i2c_io_readed_array_reversed [True, True, True, True, False, True, False, False]
    Hogyan tudnák ebből a kettőből valami ilyesmi formátumot csinálni ?
        i2c_io_readedvalue_dictionary = {
            'Switch1' : 'True',
            'Switch2' : 'True',
            'Switch3' : 'True',
            'Switch4' : 'True',
            'Button1' : 'False',
            'Button2' : 'True',
            '[Not-Connected7]' : 'False',
            '[Not-Connected8]' : 'False',
      }
    Egy olyat találtam csak eddig, amivel az eredeti dictionary-hez képest
    meg tudom fordítani a kulcsokat és az értékeket:
        i2c_io_inverted_dictionary = dict()
        for key, value in i2c_io_port_dictionary.items():
            i2c_io_inverted_dictionary.setdefault(value, list()).append(key)
    De aztán elakadtam, mert nem tudom hogyan tudnám átcserélni az értékeket a tömbben lévőkre.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz cousin333 #2829 üzenetére

    Köszi a sok infót. Átrágom majd magam a témán részletesen, de csak holnap (esetleg este).

    Most a legfrissebb Pythont használom. És az biztos hogy most már csak 3-asat szeretnék mindenhol. De azért ami még a 3-ason belül is ennyire új, azt egyelőre nem preferálnám annyira.
    Viszont ezzel kapcsolatosan még egy dologra rákérdeznék:
    Python programozással akarok majd foglalkozni - a PC/Raspberry mellett - nemsokára ESP8266-n illetve ESP32-n is.
    Vagyis ez így már MicroPython lenne.
    Így - ha amúgy nem jelentősebb a hátránya - akkor lehet inkább az olyan adatszerkezeteket, metódusokat részesíteném előnyben, amit fogok tudni majd MicroPython alatt is használni.

    Egyrészt így tanulási szempontból is részben arra fókuszálnék.
    Másrészt most konkrétan ezeket a HW-kezelő függvényeket ha jól megírom, akkor akár tudnám használni a Raspberry Pi helyett/mellett az ESP-ken is majd kapásból.
    Ez tudom hogy kicsit már így OFF lehet itt, de sajnos nem nagyon találtam a PH-n MicroPython-al is foglalkozó topicot. Az Arduino-s topic elég jól pörög, nagyon sok hasznos dolog van, de ott MicroPython-ban valahogy nem nagyon láttam senkit se programozni (amúgy nem is értem miért, a C/C++ -hoz képest azért én elég sok előnyét látom így már kezdetnek is).

    Néztem annó a hivatalos oldalon a különbségeket/limitációkat. De azért az eléggé száraz infónak tűnt. Nem tudsz esetleg valami jó összefoglalót a különbségekről ?
    Vagy akár ajánlásokkal együtt (mi az amit ugyan használhatnánk Micropython/ESP alatt, de nem annyira ajánlott a viszonylag nagyobb memória vagy cpu igénye miatt).

    [ Szerkesztve ]

  • atesss

    addikt

    válasz cousin333 #2829 üzenetére

    Na most már kezd kicsit sok lenni a szerkesztőben a Warning...
    Ez miért van ?

    A programkódos formázással van valami baja.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz cousin333 #2829 üzenetére

    No akkor most ismét nekiállok megírni a hsz-t. Tegnap du. emiatt a warning miatt elveszett amit írtam...
    Köszi az ötletet, nekiálltam a NamedTuple-t használni. Egyelőre a következő két függvényemben:
    def i2c_io_namer(i2c_io_readed_array_reversed):
        global MICROSWITCH_COUNT
        MICROSWITCH_COUNT = 4
        global MICROBUTTON_COUNT
        MICROBUTTON_COUNT = 2
        global NC_COUNT
        NC_COUNT = 2
        i2c_io_pinout = namedtuple('I2C_IO_PortA', ['Switch1', 'Switch2', 'Switch3', 'Switch4',
            'Button1', 'Button2', 'NC7', 'NC8'])
        # sample: i2c_io_readed_array: [True, True, True, True, False, True, False, False]
        i2c_io_state = i2c_io_pinout(*i2c_io_readed_array_reversed) 
        return i2c_io_state
    def i2c_io_printer(i2c_io_readed_array_reversed, i2c_io_state):
        global i2c_io_readed_array_reversed_previous
        print("----")
        print("I2C_IO portA állapot:", i2c_io_readed_array_reversed)
        # for y in range(len(i2c_io_readed_array_reversed)):
            # print ("I2C_IO_PortA: pin", y+1, "actual value: ", i2c_io_readed_array_reversed[y])
        print("Port állapot tuple adattípussal: ")
        print(i2c_io_state)
        print("Kapcsolók állapota: ", i2c_io_state[0:MICROSWITCH_COUNT])
        print("Nyomógombok állapota: ", i2c_io_state[MICROSWITCH_COUNT:(MICROSWITCH_COUNT+MICROBUTTON_COUNT)])
        print("Nem használt pinek állapota: ", i2c_io_state[(MICROSWITCH_COUNT+MICROBUTTON_COUNT):(MICROSWITCH_COUNT+MICROBUTTON_COUNT+NC_COUNT)])
        for i in range(len(i2c_io_readed_array_reversed)):
            if (i2c_io_readed_array_reversed[i] != i2c_io_readed_array_reversed_previous[i]):
                print("--")
                print("Változás az IO bemeneteken: I2C_IO Pin number", i, ": from", i2c_io_readed_array_reversed_previous[i], "to", i2c_io_readed_array_reversed[i])
                i2c_io_readed_array_reversed_previous = i2c_io_readed_array_reversed

    Ami plusz, hogy ennek az I2C-s IO modulnak (PCF8574) van egy Interrupt kimenete is. És ezt most bekötöttem a Raspberry Pi egyik GPIO bemenetére, és szeretném használni.
    Ez az Interrupt Pin akkor változik meg (1-ről 0-ba megy), ha változás történt a PCF8574 bármelyik bemenetén.
    A Raspberry-n csak ezt az egy GPIO pint-t figyelném pollingolással, és csak akkor állnék neki I2C-n keresztül kiolvasni az aktuális értékeket, ha bármelyikben egy változás volt.
    Maga a funkció működik (bár valamiért kicsit "lassan" áll vissza miután csináltam egy kiolvasást, de a célnak most ez mégis megfelel, a gyakorlatban úgy néz ki). De ez az átalakítás még folyamatban van a programkódomban.

    De sajnos a korábbi értékkel való összehasonlítást sem tudtam még megoldani a tuple-ön keresztül.
    Van amit nem értek még teljesen róla.

    Az i2c_io_pinout = namedtuple ... utasítással jól gondolom, hogy én egy "i2c_io_pinout" típust hozok létre ?
    És utána a i2c_io_state = i2c_io_pinout(*i2c_io_readed_array_reversed) pedig létrehoz egy i2c_io_pinout típusú "változóból"(mi itt erre a helyes szó?) egy konkrét példányt ?

    Hogy tudnék elérni egy adott számú "kulcsnevet" ?
    Tehát nem hogy mi az értéke, hanem hogy mi a neve az i -edik elemnek. ("Switch2" vagy "Button1" , stb.)
    Az i2c_io_state[i] az értéket adja meg csak sajnos.
    A i2c_io_pinout[i] pedig hibát dob, hogy ez egy nem iterálható típus.

    [ Szerkesztve ]

  • atesss

    addikt

    válasz cog777 #2835 üzenetére

    Ez a megoldás, ahol számol a feladat hosszával, azért elegánsabb.

    Viszont van olyan funkcióm már most is, ahol megadott ideig kell csinálnia periodikusan a feladatot. Konkrétan megadott ideig (a script elején fixen megadom egy úgymond konstans-al, most egyelőre 10 másodperc) kell villogtatnia egy ledet, 300ms-onként. Onnantól kezdve, hogy egy bizonyos feltétel előfordult. Jelen esetben ha "hiba volt".
    Ez erre akart lennie egy megoldási javaslatod ? :
    current_time = datetime.now() f() num_calls += 1 difference = current_time - first_called
    Akkor már ezt is monotonic-al kellene, nem ?

    Asszem nekiállok akkor átírni mindenhol a programomban erre a Timer-es megoldásra.
    Az új, Timer-es függvényeket akkor már mind a time.monotonic()-al csinálom.
    És ha marad még azokon kívül bármi egyéb hely - bár nem nagyon fog valószínű - akkor ott is mind átalakítom a time.time()-ot time.monotonic()-ra.

    [ Szerkesztve ]

  • atesss

    addikt

    Közben bedobnám ide is a másik problémámat, amit egyelőre én eléggé X-akták jelenségként tudtam csak beazonosítani...
    Az Arduino-s topicban kérdeztem rá eredetileg, mert az első sejtésemmel a PCF8574 modul hibájára/hiányosságára gondoltam.
    Közben felmerültek elektronikai problémák is, van ami jogos is, de a programkóddal való "megoldást" ezek még nem magyaráznák meg.
    A teljes téma: [link]
    És ebből egy tesztem, hogy konkrétan milyen teljes függvényben mely sorok megléte/nem megléte okoz furcsa különbséget: [link]

    Tehát a köztes if szerkezetbe rakott parancsok közül például egy olyan amivel még mindig előjön a hibás működés:
    if len(i2c_io_readed_array) == 8:
    print("az előző kiolvasás megfelelően megfordított értéke: ", i2c_io_readed_array_reversed)
    teszt = i2c_io_readed_array
    És egy olyan amivel már nem:
    if len(i2c_io_readed_array) == 8:
    teszt = i2c_io_readed_array
    print("A beolvasott port tömbje egy külön [teszt] nevű változóba átmásolva: ", teszt)
    Meg meg egy olyan, amivel már nem:
    if len(i2c_io_readed_array) == 8:
    print("PCF8574 Port beolvasva. A beolvasott port tömbje:", i2c_io_readed_array)

    Mit tud változtatni az, ha egy már korábban feltöltött tömböt egyszerűen csak kiíratok ??

    [ Szerkesztve ]

Új hozzászólás Aktív témák