- Érintésnélküli fizetési megoldások - PayPass via NFC
- Azonnali mobilos kérdések órája
- Okosóra és okoskiegészítő topik
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Samsung Galaxy S23 FE - nincsen sárkány
- Mobilinternet EU-n kívül, eSIM adatcsomagok használata
- Honor 90 - modellalkat
- uleFone Power
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
Hirdetés
-
Kíváncsi az EU, milyen online védelmet adnak a pornóplatformok a kiskorúaknak
it Az EB felkereste a nagy pornóplatformokat, hogy megtudja, milyen intézkedéseket tettek.
-
Lőn világosság: megérkezett új fénymérőnk
ma A márka és a metódus maradt, gyorsan pótoltuk a Honor 200 Pro méréseit.
-
Spyra: nagynyomású, akkus, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
Új hozzászólás Aktív témák
-
cog777
senior tag
Ha python-ban gzip modult hasznalva tomoritett naplofajlt keszitek. Valahogy a tomoritett fajl nagyobb meretu mint az eredeti szoveges fajl. Lehet hogy a hozzafuzes miatt?
Van erre megoldas hogy szoveget hozzaadjunk tomoritett allomanyhoz?ls -la
total 1528
drwxr-xr-x 2 zoltan zoltan 4096 Jun 1 10:58 .
drwxr-xr-x 7 zoltan zoltan 4096 Jun 1 10:58 ..
-rw-r--r-- 1 zoltan zoltan 588566 Jun 1 10:55 esp32.log
-rw-r--r-- 1 zoltan zoltan 964665 Jun 1 10:58 esp32.log.gzItt a forras (programkod formazasa nem mukodik):
import serial
import gzip
import datetime
with serial.Serial('/dev/ttyUSB1', 115200, timeout=None) as ser:
while True:
line = ser.readline().decode()
now_str = datetime.datetime.utcnow().strftime("%d-%m-%Y (%H:%M:%S.%f)")
line = "[{}] | {}".format(now_str, line)
print(line)
with gzip.open('esp32.log.gz', 'at') as f:
f.write(line)[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
logging modulba meret alapu es ido alapu rotalo talalhato. Jol mukodnek. Ha kell tomorites, akkor hasznalhatod a gzip modult.
logHandler = logging.handlers.RotatingFileHandler(filename, maxBytes=maxBytes, backupCount=backupCount)
logHandler.rotator = self._rotating
def _rotating(self, source, dest):
f_in = open(source, 'rb')
f_out = gzip.open(dest, 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()
os.remove(source)[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
Szerintem a linux nem kozvetlenul irja az sd kartyat hanem bufferelve. Ha jol emlekszem - bar ezt a linux/rpi topicban kellene megkerdezni - 5 mpkent irja az ext4 az sdkartyat.
Ha az nem jo, akkor ajanlanam a tmpfs-t v zramot es onnan rsync az sdkartyara neha.HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz asuspc96 #2757 üzenetére
Csak hangosan gondolkodom:
Kerdes az hogy mennyire fontos az hogy egyszerre kapcsoljanak a relek.Python csak 1 CPU-t tud hasznositani tehat mindenkeppen kapcsolgat a szalak kozott.
Ha eleg az hogy (hasra utok) 0.5 ms alatt kapcsoljon mind a negy rele, akkor akar a szalakat is elhagyhatod, igy egyszerubb lesz.
Pl csinalhatsz egy ciklust, abban vegig mesz mind a 4 relen, majd kivarod az egysegnyi idot, kezded elolrol.En valoszinuleg ezt csinalnam, es kimernem hogy mennyi ido alatt kapcsol 4 relet. Szerintem RPi gyors hozza.
Szalakkal valoszinuleg valamivel/kicsit jobb lenne, de ez sem parhuzamos, es nem biztos h megeri hogy 100us-ot nyertel
Persze ha tanulni akarsz, akkor okes.
Ha tenyleg parhuzamossagot szeretnel akkor inditanod kell kulon processzeket es vezerelni oket, de nem biztos h megeri.
Nalunk a vezerlo szoftvernel par ms a limit ami alatt reagalni kell az esemenyekre. Tehat meg nalunk sem kell egybol lekezelni, pedig GPS-t es hidraulikat kell kezelni.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
-
cog777
senior tag
válasz asuspc96 #2766 üzenetére
A kododbol kiindulva es legegyszerubben, berakod egy ciklusba
while True:
for i in range(len(self.relay_threads)):
self.relay_threads[i].start()
Mert ahogy latom, vegigfut a feladatokon aztan kilep a szalbol.
(Csak erdekessegnek megemlitem hogy esp32-n futo micropythonon, ha sokszor keszul szal es lepsz ki belole akkor nem szabaditja fel a stack-et es par nap utan crash, igy kenytelen voltam allando 4 szalat kesziteni a halozati kezeleshez)Ha a releket viszonylag sok ideig tartod nyitva es zarva akkor vegulis az en egyszerubb megoldasom is mukodhet. Sok ido itt: masodperc.
Beagyazott rendszereknel szokas hogy van egy ciklus amelynek iteracioja rovid, tehat gyorsan vegig tud menni az osszes feladaton. Sot, ha mindig kivarja az idejet a kovetkezo iteraciora, hiaba vegzett az osszes feladataval, akkor remekul lehet az egyes feladatok idejet megtervezni es akar ido diagrammon abrazolni.
Tehat:
Vezerlo ciklus:
Rele 1 vezerles (nyit/zar/semmit nem csinal, tablazattol fuggoen)
Rele 2 vezerles (nyit/zar/semmit nem csinal, tablazattol fuggoen)
Rele 3 vezerles (nyit/zar/semmit nem csinal, tablazattol fuggoen)
Rele 4 vezerles (nyit/zar/semmit nem csinal, tablazattol fuggoen)
Var (legalabb 1ms legyen ez az iteracio)Ilyenkor teljes kontrol alatt van a vezerlese a hardvernek. Ez nem ritka implementacio, emlekszem hogy egy uzemben egy kis teljesitmenyu proci vezerelt komoly dolgokat igy, abban nem voltak szalak. (Ja, nem azert irom h ne probald ki a szalakat, csak mint erdekesseg)
Bocs ha ezt mar tudtad, nem derult ki szamomra hogy mennyire vagy szakertoje a temanak.
Mas: a print utasitas is lassit a fontos idoziteseket elronthatja. Ilyenkor szoktak kulon szalban/processzben futo naplozasba beletenni az esemenyeket... de ha tobb mp-es idok vannak akkor nem szamit itt.
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
"Ilyenkor teljes kontrol alatt van a vezerlese a hardvernek. Ez nem ritka implementacio, emlekszem hogy egy uzemben egy kis teljesitmenyu proci vezerelt komoly dolgokat igy, abban nem voltak szalak."
vagy 50 tartalyt...
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz kovisoft #2768 üzenetére
Jah, tenyleg... akkor gondolom joinolni kell a szalakat a vegen,
while True:
for i in range(len(self.relay_threads)):
self.relay_threads[i].start()
for i in range(len(self.relay_threads)):
self.relay_threads[i].join()Vagy valami flag-et beallitani ha vegzett az osszes, addig var.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz asuspc96 #2769 üzenetére
"Arra gondolok ugye, hogy a listában ugye azokra a
thread
-ekre van meg a referencia...ebből indul ki az okfejtésem. Szóval arra akarok kilyukadni, hogy így nem fognak egy idő után elszaporodni a szálak ? "Teljesen jol gondoltad , ki kell torolni a listat, ha minden szal vegzett es ujrakezdeni. PC-n (RPi-n is kb PC operacios rendszer fut) szerintem teljesen mindegy ha eldobja a szalat es nem hasznositja ujra/tartja meg. Van rendes memoria kezeles stb. Nem ugy mint a kicsi esp32...
"És akkor hogy szedem ki az infót az egyes szálakból, hogy éppen hol tart ?
Gondolom akkor kéne valami szinkronizációs lépés is. Arra gondolok, hogy egyik szálból a másikba csak úgy nem fogok tudni átdobni infót."
Csak erdekesseg keppen mondtam, ha fontos lenne a nagyon rovid ido akkor meg a print utasitas is szamitana.
En meg a harverhez ertek kevesbe, mennyi a relek kapcsolasi ideje?
Version2 (kovisoft-nak es neked is koszonhetoen):while True:
for i in range(len(self.relay_threads)):
self.relay_threads[i].start()
for i in range(len(self.relay_threads)):
self.relay_threads[i].join()
self.relay_threads = []HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz kovisoft #2772 üzenetére
Haha... koszi.
Akkor (szamomra) marad a flag-es megoldas, hacsak nincs jobb otleted.
Csinalni kell egy listat flagekkel:
finished_task = [False, False, False, False]Mindegyik task a sajatjat True-ra allitja ha vegzett.
A vezerlo ciklusban pedig addig var az uj iteraciora, amig mind nem lesz True.
(Bar ahogy emlitettem, mivel nagy projektekkel dolgozunk, inkabb hajlok a KISS-re es a szalnelkulisegre pont azert mert egyszerubb. )
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz kovisoft #2775 üzenetére
Az nem baj ha elcsusznak a szalak egymashoz kepest? Latom eselyet annak hogy valamelyik hamarabban vegez mint a masik, tehat nem lesznek szinkronban.
Szerk: ja, latom hogy fontos az egyszerre indulas.
Akkor en a flag-es megoldast valasztanam vagy a joinolost@asuspc96: pythonban van automata GC, nem lesz szivargas.
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz Mr Dini #2784 üzenetére
asyncio dolgot nem tudom, de ha CPU-t teljesen kihasznalo dolgot kellene futtatnom pythonban, akkor inditanek annyi process-t amennyi CPU van a rendszerben (vagy duplajat a hyperthreading miatt) aztan localhoston atadnam az eredmenyeket a vezerlo processnek.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
En hasznalom a Micropythont otthoni projektjeimben.
Ha jol tudom akkor a Python 3.5-re epul. Van par limitacio az esp8266/32-on. Az elobbi nem tamogajta a szalakat, utobbi nem tud vegtelen mennyisegben szalat kesziteni es eldobni. (Igy timer-t sem erdemes hasznalni) Egy ido utan (kb 1 nap alatt ha percenkent csinalsz szalat es dobsz el pl TCP kapcsolat lekezelesere akkor) nem kepes tobb szalat kesziteni. Valamit nem szabadit fel es betellik a (stack-je) pohara
Erdemes inkabb perzisztens szal(ak)at kesziteni es hozzarendelni egy-egy feladatot.En elegedett vagyok a Micropythonnal ezeket a limitaciokat leszamitva. Pycharm-hoz allitolag van plugin is...
Csinaltam egy homerseklet mero rendszert. Kertben, padlason, nappaliban helyeztem el szenzorokat es egy kijelzon jelenitem meg. Tervben van a webes grafikon megjelenito weblap + sms riasztas ha tul magas homersekletet mer a nappaliban. (Macsek miatt)Itt a RPi4/esp32/8266 "fejlesztoi laboromat" latod
" 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)."
A kicsi Adruino Uno/Nano-n biztosan nem fut a Micropython, kell neki kb legalabb 80KB memoria.. mas verziokon mar gondolom elindul."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)."
Ez inkabb gyakorlatban jon elo. 8266-on max 20KB szabad memoria van, ami nem tul sok de egyszerubb feladatokra eleg, esp32-on viszont tobb 100 KB vagy meg tobb attol fuggoen hogy PSRAM-ramos verziod van-e. Igy memoria limitacio kevesbe problema.A GC-t neha erdemes letiltani ha pontosabb idozitest szeretnel egy-egy feladat kozben, es utana vegrehajtani.
Ha valami kerdesed van, tedd fel nyugodtan, fel szememet a topicon tartom
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
Egyszeru megoldas, ahol nincs figyelembe veve a feladat hossza, peldaul 2mp-ig tart egy feladat, de 5 masodpercenkent futtatjuk, akkor bizony 7mp-kent fog elindulni a feladat mert nincs beleszamolva annak a hossza:
link online pythonbanimport threading
import time
from datetime import datetime
def mylog():
now = datetime.now()
print(now.strftime("%H:%M:%S.%f"))
print("Szimulaljuk a munkat")
time.sleep(2.0)
threading.Timer(5.0, mylog).start()
mylog()
Bocsanat, programkod formazasa nem igazan mukodik.
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
Itt kiszamitjuk feladat futasanak idejet es kivonjuk az timer intervallumbol. Garantalva az 5 mp-kent valo futtatast. Feladat: ha tovabb tart a futas mint 5 mp, akkor a maradek ido negativ lesz :
maradek_ido
Erdemes egy if-ben ezt vizsgalni hogy negativ-e es lenullazni a maradek_ido-timport threading
import time
from datetime import datetime
TIMER_INTERVAL = 5.0
last_hit_ts = 0.0
def mylog():
now = datetime.now()
print(now.strftime("%H:%M:%S.%f"))
# Munka kezdetenek merese
munka_start = time.monotonic()
print("Inditjuk a feladatot")
# 2mp-et vesz igenybe
time.sleep(2.0)
# Munka vegenek merese
munka_end = time.monotonic()
# timer korrekcio
eltelt_ido = munka_end - munka_start
maradek_ido = TIMER_INTERVAL - eltelt_ido
print('Eltelt ido:', eltelt_ido, 'maradek_ido', maradek_ido)
threading.Timer(maradek_ido, mylog).start()
mylog()
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz concret_hp #2867 üzenetére
Kivy-t is megnezheted.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz concret_hp #2878 üzenetére
Tobb lehetoseg is van.
Ha a scripteket egyesevel inditod, akkor a subprocess.Popen-nel konnyen lehet olvasni a kimenetet a scripteknek. Itt van egy pelda: [link]Viszont, ha tobbet akarsz a foprogram blokkolasa nelkul inditani, akkor az tobb melo. Egeszen hosszan eldiskuralnak rola [link] .
Tovabba egyszeru megoldas a fajlon keresztuli kommunikacio (nem vicc, linux alatt a /tmp-t lehet memoriaba tenni es nagyon gyors elerest tesz lehetove, illetve lock fajlokat is lehet alkalmazni ha nem csak 0/1-et irsz bele), minden process kapna egy sajat fajlt hogy tudja jelezni mikor vegzett.
Azon kivul lehet TCP-n kereszul kommunikalni veluk, pythonban ez is eleg egyszeru.
[ Szerkesztve ]
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz concret_hp #2881 üzenetére
Vagy beolvasod hogy a tartalma 1 vagy semmi. Mielott elinditod a processt, nullazod a tartalmat.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
válasz concret_hp #2888 üzenetére
Lehet hogy van fajl rendszer monitorozo, de szerintem az 1mp-es csekkelo sem ordogtol valo. Az oprendszer ugy is cache-i a gyakran olvasott fajlokat.
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
Raspberry Pi-re irok egy kis projektet inkabb sajat magam formaban tartasara.
Tobb process-t akarok irni es futtatni, kulonbozo feladatokra es kommunikalni kozottuk. Ez eddig nem problema, MQTT-vel es mosquittoval csinalnam elsore.Viszont felfedeztem a multiprocessing modult pythonban, eleg nagy megdobbenes volt.
Processek kozti kommunikaciora tudom hasznalni a queue-t, viszont hogyan tudok "broadcast"-elni? Ahogy latom a queue-bol ha egy process kiveszi az adatot, akkor a tobbi nem kapja mar meg. Ezt a ficsort nagyon hianyolnam ha valahogy nem lehetne megoldani... google nem segit ebben
Egyeb otlet?
HP ZBook Studio 15.6 G8 Mobile Workstation - Windows 11
-
cog777
senior tag
Új hozzászólás Aktív témák
- ÚJ Logitech MX MASTER 3S vezeték nélküli egér (Graphite)
- Apple iPad Pro 12.9 M2 /128GB 6.generáció . 2027.04 ig gari. Egyösszegű mediamarkt számla
- Oehlbach új Bi-wire átkötő (hangfal áthidaló) "jumper" szettek audiofiltől közel High-End hangzásig!
- Lian Li vízhűtések érkeztek!
- PC , i7 7740X , 1070 8GB , 16GB DR4 , 256GB NVME , 1TB HDD