- Videó stream letöltése
- Álláskeresés, interjú, önéletrajz
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- SkyShowtime
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Erőszakos tartalomba fut a gyerek, ha internetezik
- Aliexpress tapasztalatok
- YouTube
- Facebook és Messenger
Új hozzászólás Aktív témák
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1001 üzenetére
Utánanézek majd, de nem egyszerű megtalálni a problémát, mert nem jelentkezik mindig. Amikor igen, akkor 1-2 számjeggyel kevesebb a 2. szám, vagyis 1234 helyett 234 vagy 34 lesz. Közben az 1. szám meg jó, amit nem teljesen értek, mert 1 összefüggő kód a teljes uart kommunikáció fpga-n.
A kimenet fájlba küldésére van valami ötleted?
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1003 üzenetére
Jah oké.
A fájlon belül próbáltam ugyanezt, de ott meg ha van pont a fájlnévben, akkor syntax errort dob. Mikor leírtam külön az output fájlt egy változóba, majd $output néven próbáltam használni, az sem volt jó. Valamint le kellene korlátozni a kimenetet.
Olyanra gondoltam, hogy kellene egy fix "számú" ciklus, amiben csak 2 értéket olvas be, oszt, logaritmust számol, majd pedig kiírja az eredményeket és ezt kezdi előről, a megadott elemszámig. Egy egyszerű for ciklus vagy while megteszi. (a log mellé majd egy freki értéket is oda szeretnék írni, de ez egyszerű lesz, csak a ciklus száma alapján fog oda kerülni - megnézem majd, hogy ez a 2 oszlopos értéksor megoldás megfelel-e a gnuplot elvárásainak)
A lemaradó nullákat nem tudom hogyan vizsgáljam, a cat-al nézve mindig minden érték jó. Ha az od -An -t x1 -el nézem, akkor is. Pont az jön be, amit elküd az fpga-m. (csomószor újranéztem ezekkel, nem volt hiba egyszer sem)
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1004 üzenetére
awk-on belül fájlba úgy lehet átirányítani régi poros emlékeim szerint, mint shellben.
tehát printf ".." $a >>$outputfile
szerintem lehet pontot tenni a kimeneti fájl nevébe.tudnál mutatni olyan kimenetet, ami cat-tal jó, awk-kal meg nem?
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1005 üzenetére
Beépítve a számolós sorba, sikerült fájlba írnom. Mondjuk csak a két érték ment be, a művelet eredménye nem.
function log10(x) {\
return log(x)/log(10.0);\
}\
OUTPUTFILE="/home/patch/awk/output.txt"
{a=substr($0,0,4); b=substr($0,4,4); if (a > 0) printf "%d,%d,%f\n",a,b,20*log10(b/a) $a >> $OUTPUTFILE; }Mára szerintem ennyi, holnap megpróbálok összehozni egy ciklust ehhez. Van valami opció a kimenet tároló fájl felülírására, vagy töröljem minden alkalommal a program elején és csináljak újat?
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1006 üzenetére
valahol kevered: a és $a is előfordul.
lehet, hogy érdemes lenne eredeti formája szerint bezárójelezni a printf-et:
printf("%d,%d,%f",... ) >>$outputfileigen, ha írsz valamit a kimeneti fájlba >$outputfile alakban, az csonkolni fogja.
viszont ha további feldolgozást fogsz csinálni, akkor a 10-es logaritmust lehet, nem awk-ból kellene csinálnod, nehogy lekésse a beolvasást az awk.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1007 üzenetére
Próbálom összehozni a dolgokat kicsit, de a log. végeredménye elég random.
function log10(x) {\
return log(x)/log(10.0);\
}\
OUTPUTFILE="/home/patch/awk/output.txt"
{a=substr($0,0,4);
b=substr($0,4,4);
if (a > b)
printf("%4.2f\n", 20 * log10(b/a)); }Arra gondoltam, hogy bele kellene foglalni egy ciklusba ezt az egészet, már ha majd működik, mert akkor megoldanám fpga-ban, hogy csak akkor küldjön újabb 2 értéket, mikor ez már fel lett folgozva. Meg lehet azt csinálni, hogy amikor az a és a b be van olvasva, akkor "elengedje" a soros portot? Mert azt az eseményt tudom figyelni fpga-ból a handshaking jeleken keresztül.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1009 üzenetére
Az xon xoff protokoll akkor tulajdonképpen a start és stop byte megvalósítása?
Az úgy működik, hogy mikor beolvastam a 2 számot, akkor "elengedje" a soros portot a programom? Mert az ekkor történő cts / rts állapotváltást fel tudnám használni az fpga-ban.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1011 üzenetére
Izé, de akkor jól értem az xon xoff dolgot? Egyszerűen csak a DC1 / DC3 ascii vezérlő karaktereket illesszem be az adásom elejére és végére és ezekre figyeljek az awk-ban?
Amúgy a cts,rts kezelését nem a HW végzi el? Mivel az fpga figyeli a dolgokat, egy cts kérés után csak akkor kezd küldeni, ha (és ameddig) az rts szignál '1'.
Ez a dolog nekem csak annyi lenne, hogy az rts vezeték állapotváltozását fel lehetne használnom a vizsgáló szinuszjel frekvenciájának arrébb léptetésére, amit írtam neked. Most úgy van, hogy akkor léptet, mikor az AD-t követő latch betöltötte a két mért értéket, és kész küldeni őket az uart modulnak.(ez a latch csak arra kell, hogy mindkét AD-ről szinkronban kerüljenek az adatok továbbításra, nélküle lenne 5-10 órajel késés a második értéknél az elsőhöz képest)
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1012 üzenetére
nem jól érted. az xon-t neked kell kiadni awk-ból, annak érkezésekor kezdhet el adni az fpga, és adhat mindaddig, amíg nem kap xoff-ot. tehát a gép felől az fpga felé megy az xonxoff és az fpga felől a gép felé menő forgalmat akasztja meg.
az rts/cts szerintem nem hardveres, de a linux driver kezeli. [link]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1013 üzenetére
Megírtam az uart RX részét FPGA-n.
Ha kiküldök így egyszerűen valamit terminálban: printf("2") > /dev/ttyUSB0, akkor frankón a 2 ascii megfelelője, vagyis 00110010 ér oda az fpga-ra.
Viszont a vezérlő karakterek, mint a DC1, DC3 az xon xoff -nál, azt hogyan kell kiküldeni? Azt hiszem a printf az karakterenként szétbontva küldi el.
Mondjuk simán számokkal is helyettesíthetem a vezérlő karikat, de az olyan hülye megoldás lenne.Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1018 üzenetére
Megvan, printf "\x11" >... küldi el megfelelően.
Valamint implementáltam az xon figyelés dolgot, most csak akkor küld az adó, ha 000010001 beérkezett és csak addig, amíg ez van.
Tudsz valami leírást, linket mutatni, ahol egyértelműen le van írva, hogy ilyesmihez hogyan csináljak ciklust, ciklusokat az awk-ban? Valahogy baromira nem áll kézre ez a nyelv.Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1020 üzenetére
Tulajdonképpen megírni azt, amit a 1013-ban írtál.
Küld egy xon -t, 2 adat beérkezése után rögtön xoff-ot küld, elvégzi az osztást, logaritmust, fájlba írást, majd jön a következő kör.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1021 üzenetére
mi lenne, ha küldene egy xon-t, betöltené egy tömbbe a teljes adatmennyiséget, ami a grafikonodhoz kell, majd küldene egy xoff-ot, utána szöszölne osztással meg logaritmussal?
megnéztem a manualját, szerintem elég jó.
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
-
CPT.Pirk
Jómunkásember
-
CPT.Pirk
Jómunkásember
válasz bambano #1022 üzenetére
#!/bin/bash
INPUTFILE="/dev/ttyUSB0"
OUTPUTFILE="/home/patch/awk/output.txt"
rm $OUTPUTFILE
touch $OUTPUTFILE
printf "\x11" > $INPUTFILE
$INPUTFILE | awk '{a = substr($0,0,4);b = substr($0,4,4); if (a > 0) printf "%d,%d,%f",a,b >> $OUTPUTFILE}'
cat $OUTPUTFILE | while read line ; do
echo $line
#itt majd lesz valami awk megint
done
printf "\x13" > /dev/ttyUSB0Na most ezt alkottam, nagyobb részt bash, ahhoz több segítséget találtam. Az a terv, hogy az awk hívásnál menti fájlba az értékeket, majd később a cat-es rész soronkénti visszaolvasással meg egy másik awk rész fog számolni.
Viszont az awk-s sorral baja van: # ./teszt.awk
./teszt.awk: sor: 10: /dev/ttyUSB0: Engedély megtagadvaAmit nem tudom, hogy miért van.
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1026 üzenetére
Jah, de ez sem megoldás. A cat az idők végezetéig olvassa a portot, meg akkor is, ha tisztán awk-val csinálom, ahogy korábban volt.
Szóval kezdek kifogyni minden ötletből, hogy hogyan lehetne abbahagyatni a port olvasást a 41. /n után.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
CPT.Pirk
Jómunkásember
Ebben mi a rossz?
i="0"
count="42"
while [$I < $COUNT]
do
echo alma
(( i++ ))
doneA while-os sorrarl van problémája, azt írja: ]: nincs ilyen fájl vagy könyvtár. Akkor is ez van, ha i < 42 van feltételnek megadva, csak akkor ]: helyett 42]: van a szövegben.
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1027 üzenetére
nem, nem olvassa az idők végezetéig a portot, ha a csővezeték következő lépcsője lebontja a csövet.
küldj egy mintafájlt, ha lehet, mondjuk 50 sorral, és megnézem neked.
a másik hsz-re: emlékeim szerint a [ ] jelek elé és mögé kell szóköz. tehát a [$I nem jó.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1029 üzenetére
Igen, kis - nagy betű különbség az megvan. Beírva szóközt, már más a helyzet. Ha a feltétel < a "kacsacsőr", akkor ez a baja: $COUNT: kétértelmű átirányítás.
Ha -lt vagy -ne (gondolom a "kevesebb mint" és a "nem egyenlő" röviden, ilyen példákat találtam neten) van a kacsacsőr helyén, akkor meg végtelen ciklusban kapom az almát.
A másik dologra visszatérve, jelenleg egy while ciklust akartam írni, ami soronként olvassa a soros portot dd, vagy a read paranccsal.
Ma még fájlba írni nem tudtam, a cat, meg mindennek a kimenete egy csomó új állományt hozott létre, a beolvasott 2 szám volt a nevük. Tehát 40924091, és így tovább állományok.
nem, nem olvassa az idők végezetéig a portot, ha a csővezeték következő lépcsője lebontja a csövet. - ezt hogy kell elképzelni?
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1031 üzenetére
BEGIN { printf ("\x11")>/dev/ttyUSB0; }
NR<41 { a[NR]=substr($0,0,4); b[NR]=substr($0,4,4); }
END {
printf ("\x11')>/dev/ttyUSB0
for(i=1;i<41;i++) printf ("%d,%d,%f\n",a[i],b[i],log(a[i]/b[i])/log(10));
}kb. ennyi. ezt kirakod egy fájlba, majd gawk -f awkfile /dev/ttyUSB0
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1032 üzenetére
Pici igazítás után:
BEGIN { printf ("\x11")>/dev/ttyUSB0; }
NR<41 { a[NR]=substr($0,0,4); b[NR]=substr($0,4,4); }
END {
printf ("\x11") > /dev/ttyUSB0
for(i=1;i<41;i++) if(a[i] > 0) printf ("%d,%d,%f\n",a[i],b[i],log(a[i]/b[i])/log(10));
}erre jutottam:
4091,1409,0.462918
4090,408,1.001063
4091,1409,0.462918
4091,1409,0.462918
...
...A kódba megint kellett az a[ i ]> 0 , mert jött megint a 0-val osztás dolog, mint korábban. Az elemek száma a kimeneten stimmel, de amíg nem húzom ki az USB-t a portból, addig nem látok semmit.
Valami még nem stimmel a számolásnál. No meg érdekes, hogy 1-2 számjegy eltűnik, akár csak korábban.[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1034 üzenetére
Jah, b > 0, ez logikus.
Nézd meg az értékeket, a második szám első értéke az első szám utolsó számjegye.
4091,1409,0.462918
4090,0409,1.000000
4090,0409,1.000000
4091,1409,0.462918
4092,2409,0.230099
4091,1409,0.462918
4091,1409,0.462918
4098,8409,-0.312172
4090,0409,1.000000A második oszlopban el van tolódva minden szám egyel jobbra.
cat /dev... -el nézve nincs ilyen gond, ott a második oszlop hibátlan.[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1036 üzenetére
Igen, ez megoldotta az értékeket.
BEGIN { printf ("\x11")>/dev/ttyUSB0; }
NR<41 { a[NR]=substr($0,1,4); b[NR]=substr($0,5,4); }
END {
printf ("\x11") > /dev/ttyUSB0
for(i=1;i<41;i++) if(b[i] > 0) printf ("%d,%d,%f\n",a[i],b[i],20*(log(b[i]/a[i])/log(10.0)));
}A logaritmus számolást kicsit átalakítottam, de még mindig nem jó, pedig szerintem ugyanaz van ott, mint ami korábban egy függvénybe írtam:
function log10(x) {\
return log(x)/log(10.0);\
}\[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1038 üzenetére
Valóban, nem írtam át az if-et, de ez nem befolyásolhatja a végeredményt.
Tehát osztanom a második számot kell az elsővel, majd az eredményből kell 20*10-es alapú logaritmust számolnom.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
-
-
-
CPT.Pirk
Jómunkásember
válasz bambano #1044 üzenetére
Kimentettem a lényeget pastebinra: [link]
A read(4, ... sorok ismétlődnek egészen addig, amíg ki nem húzom a csatlakozót, ekkor van a close(4) = 0 sor, az alatta lévők meg az eredmények kiírása. Szóval kb. addig olvas, amíg ki nem húzom a csatlakozót.
Valamint másik probléma, hogy bár 2 helyen is van az "x11" elküldése, de egyiknél sem csinál semmit. Tegnap a bash-ból küldve ugyanezeket, ott simán működött.
Itt van a pastebin eleje is, kicsit zagyva, de hátha találsz valamit benne: [link]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
válasz CPT.Pirk #1045 üzenetére
biztos vagy benne, hogy gawk-ot használsz? mit mutat a
ls -l /etc/alternatives/awk
?a második pastebinben van a 82. sor:
open("0", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
erről nem tudom, hogy jó-e, itt szerintem /dev/ttyUSB0-nak kellene lennie, hacsak az nem egy link.A substr-t tartalmazó sor végére írj már egy printf "%d\n",NR; -t, hogy lássuk, jól számolja-e a sorokat.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
CPT.Pirk
Jómunkásember
válasz bambano #1046 üzenetére
Az etc-ben nincs alternatives könyvtár. (arch alapú disztrón vagyok most) Viszont csomagkezelőben megnézve, a gawk 3.1.8-3 van telepítve, más awk-s dolog nincs.
Azt az openes sort megnéztem, ott írja is, hogy rossz ioctl eszköz, aztán alatta pár sorral meg már ott van az open után a /dev/ttyUSB0.
Beírtam a kért printf dolgot, itt van a friss pastebin: [link]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
Új hozzászólás Aktív témák
- Honor Magic6 Pro - kör közepén számok
- Robot fűnyírók
- Milyen belső merevlemezt vegyek?
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Poco F5 - pokolian jó ajánlat
- Nvidia GPU-k jövője - amit tudni vélünk
- Motorola Moto G84 - színes egyéniség
- E-roller topik
- parandroid: KerékPH!áros 2024 tavaszi balatoni megmozdulás
- További aktív témák...
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- AKCIÓ! - STEAM kulcsok /Anuchard, Aragami, Children of Morta, stb. - 2024.03.15
- Eladó Steam kulcsok kedvező áron!
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Steam kulcsok - 990/1500 HUF - Life is Strange/Road 96/Saints Row/Scorn/Warhammer- UTALÁS/REVOLUT