- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- ReVanced patch-elt alkalmazások és Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Apple Watch Sport - ez is csak egy okosóra
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Mobil flották
- Samsung Galaxy A55 - új év, régi stratégia
- Szimpatikusnak tűnik a T Phone új generációja
- Netfone
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- sziku69: Fűzzük össze a szavakat :)
- crok: Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Luck Dragon: Asszociációs játék. :)
Hirdetés
-
Az IMF szerint cunamiként csap le a munkaerőpiacra az AI
it Az IMF vezetője, Kristalina Georgieva szerint cunamiként söpör majd végig a globális munkaerőpiacon az AI.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
A Galaxy A73 is telepítheti a One UI 6.1-et
ma Amennyiben rendelkezik ehhez szükséges 2,6 GB szabad tárhellyel.
Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
Olyan kérdésem van, hogyha van egy szabvány RS232 -> USB eszköz, amit felismer a kernel és látszik az lsusb -nál, akkor az eszközön beeső értékeket le lehet-e menteni egy fájlba?
Kicsit konkrétabban, egy fpga-ra van kötve egy RS232-USB modul, én kiküldök egy frekvencia és egy erősítés értéket a modulon át, ez bemegy az USB portra, onnan le kellene menteni egy fájlba, majd a következő érték párost egy új sorba, és így tovább. Végén meg tudnék belőle grafikont rajzolni pl. libreofficeban.
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 Jester01 #857 üzenetére
A fene vigye el, most nézem, hogy nem rendes pici usb-t tettek rá, hanem ezt az új, még kisebb usb-t.
Amilyen pici a csatlakozó, még ráheftelni sem nagyon lehet másikat, vennem kell egy kábelt neki.Jelentkezem, ha végre be tudtam dugni.
[ 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
Haladok a projectemmel. Olyan kérdésem lenne, hogy önmagában a bash script elég-e az alábbi feladatok elvégezésre:
- USB-ről "értékcsomagok" beolvasása, ezekben 12 bit tartalmazná az érdemi adatot, előtte lévő x (mondjuk 16) bit meg azt, hogy hányadik mérés adata érkezett meg, a megadott maximumig kellene letárolni az értékeket. Ezeket külön kellene választani mondjuk bitszám alapján. Esetleg eleve külön is elküldhetem őket, ha úgy egyszerűbb.
- A 12 bites bináris értéket át kellene alakítani decimális számmá (ezek Uki és Ube lennének), majd el kellene végezni rájuk ezt a képletet: Au = 20* log_10 (Uki / Ube).
De mindenek előtt, egyszer olyat kellene csinálnom, hogy figyelem, mi esik be USB porton. Nincs túl sok bash script tapasztalatom, szóval a fenti kérdéseket ennek megfelelően értékeljétek.
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
Szóval ez úgy soros port, hogy az FPGA-m felé néz 4 port, RX,TX, RTS, CTS, a kis panelon egy FT232RQ IC van, erről meg már rendes USB port jön le, az van összekötve a számítógéppel. Így néz ki egészben: [link]
Akkor a logaritmus csúszik kicsit, max összeszenvedek rá egy C programot, vagy valami.
Viszont ami fontos lenne, olyat lehet csinálni, hogy valahogy detektáljam PC-n, ha valamit elküld ez a kis modul? Bőven megfelelne, ha egy fájlba kiíródna a beesett 8 bit, vagy látnám terminálban valahogy, stb.
szerk: bc/dc -ről még nem igen halottam, a DC valami C szerű cucc a wiki szerint. C, DC, BC közül melyiket ajánljátok?
C-t ugyan tanultam kicsit, de az nem sok.
[ 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
No odáig eljutottam, hogy a /dev/serial... alatt is létrejön eszköz, mikor csatlakoztatom a modult, valamint a /dev/ttyUSB0 is. Ahogy nézem, ez utóbbit szokták kezelni.
Nem igazán találtam utalást Linux alatt az "online" loggolására, csak Windowsos megoldásokat, valami ilyesmit találtam Linuxra:
exec </dev/ttyUSB0
stty igncr
while read -r; do
echo "[$(date)]: $REPLY"
done </dev/ttyUSB0 >>/usb/BigDrive/CurrentCost/CurrentCost.log[ 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
Mi a menete egy Shell scritpben annak, hogy benyeljem az adatokat USB-s uartomról?
Windowson így megy:
Fel kell építeni a kapcsolatot (egy packet monitor programban csináltam), megadva, hogy 9600baud, 2 stop bit, nincs paritás bit. Ez után tud csak küldeni az uart modulom csomagokat a PC-re.Valamint ilyen formában jönnek az adatok 4* 8 biten, ez 2 darab 12 bites AD kimenetéről származik:
1. 8 bit: AD1 7..0 bitek
2. 8 bit: "0000" és AD1 11..8 bitek
3. 8 bit: AD2 7..0 bitek
4. 8 bit: "0000" és AD2 11..8 bitekEzeket kellene az eredeti, 12 bites formában letárolnom. Az egyszerűség kedvéért kezdésnek elég az is, ha csak az AD1 2*8 bitjével foglalkozunk.
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 Jester01 #895 üzenetére
stty -F /dev/ttyUSB0 9600 cstopb -parenb
Ez terminálban rootként lefut, probléma nélkül. Viszont ha megint beírom az stty parancsot, akkor meg továbbra is 38400 baud-ot ír.
Szóval nem tudom, hogy átállt-e.
od -An -d -N4 /dev/ttyUSB0
Igen, decimális számot szeretnék. Tehát össze kell pakolni 2*8 bitet egybe ahhoz, hogy a korrekt értéket lássam. Ehhez a parancshoz tudsz mutatni valami leírást? Nem nagyon találtam most hirtelen.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 Jester01 #895 üzenetére
stty -F /dev/ttyUSB0 9600 cread crtscts cs8 -cstopb -parenb Ez így már működik, ha így írom be, akkor villog az adás led, tehát a modulom és a gép között létrejött a kapcsolat. Viszont az stty szerint továbbra sem változott a baudrate, bár ha az lenne a valóság, akkor szerintem nem küldözgetne a modulom.
Csináltam egy N4 nevű fájlt, majd kiadtam az od-s parancsot:
od -An -d -N4 /dev/ttyUSB0, ami után már nem küld a modulom semmit a gépnek, a fájlba nem kerül semmi. Milyen formában kellene ezt kiadni? Ha terminálban adom ki, akkor csak kilépni lehet a terminálbó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
Elvileg kézfogás mentes uart protokoll van, mert az FPGA felé megy egy CTS és RTS, viszont onnan a modul felé csak a TX, és mérések szerint a CTS, RTS logikai '1'-en vannak, amint végez a modul az USB-s kapcsolat felépítésével.
Végül is mindegy, mert a modulom küldi a cuccot, lehet, hogy külön kezeli az adó és a vevő oldalt.Am igen, már lejárt a szerkesztés, mikor rájöttem, hogy az N4 az nem fájl akar lenni.
Viszont akkor az a kérdésem, hogy konkrétan hogyan tudnék lementeni beeső 4*8 bitet? Milyen környezetben használjam ezt az OD parancsot?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
Megpróbáltam -crtscts, crtscts-el és ezek nélkül is, mindegyik esetben az stty szerint a baudrate 38400, az od-s parancsot kiadva meg a modulom abbahagyja a küldést. Mikor kihúzom az USB-t, akkor 7 darab 0 a kimenet.
Ezután ha visszadugom, a modul újra küld csomagokat, nem kell semmit csinálnom.[ 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
Na most valami tanácsot szeretnék kérni. Még mindig a soros port olvasás gondom van.
Ha od-val nézem a /dev/ttyUSB0 -t, akkor vagy eltalálja, hol kezdek adatot küldeni, vagy nem. Úgy csináltam meg az adat szerkezetet, hogy 00 00 a kezdést jelöli, FF FF pedig a végét, és a közte lévő 2 darab szám értékére van szükségem.
Amikor jó, akkor ilyen formátuma van a kimenetnek: (od -An -t x1 /dev...)
00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF FF(xx 0x a normális adat forma a 12 bites számaimhoz)
Más esetekben meg ott indul, ahol gondolja. Tehát van, hogy 00 xx 0x xx 0x FF FF ..., van hogy FF 00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF
Amikor jó helyen kapja el, akkor minden érték stimmel. Ha nem, akkor meg rossz párokat rak össze, pl. utolsó példánál az FF 00, az 00 xx, és az 0x FF fogják alkotni a számpárokat, ami nem jó.
Nem tudom hova tenni az od ilyen viselkedését. Olyanra tudtok mondani egy egyszerű szkriptet, hogy egyszerűen pl. lementi a cat /dev/ttyUSB0 kimenetét egy fájlba, de olvasható formában? Terminálban ez a parancs kidob egy rakás kérdőjel szimbólumot és semmi mást.
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 CPT.Pirk #973 üzenetére
Na jó, rájöttem, annyira nem nehéz az alapokat megírni. Szóval írtam egy pici scriptet, ami kitolja egy txt fájlba az értékeket. Viszont ha od-vel csinálom, akkor az előzőben vázolt probléma fent áll, ha rossz helyen kapja el a számokat, akkor minden érték hibás lesz.
cat-al pedig csak ascii karakterek mennek a fájlba, ahogy nézem, ez nem is alkalmas arra, amit szeretnék.
Tudtok valamit, ami az od-t kiváltaná?
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
Nem mikrovezérlő, ott nem tudom hogyan zajlik a soros port móka.
Szóval arra gondolsz, hogyha decimális formában küldöm át, pl. BCD kódban, akkor a cat parancs már számokat fog nekem kiadni? Ezt relatíve könnyen meg tudom csinálni, mert van egy kész bin - bcd konverterem.
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
Ahogy nézem, ez nem is egyszerű feladat. FPGA-ban nem nagyon van olyan, hogy ascii.
Talán az járható út, hogy BCD átalakítást csinálok, majd pedig a számjegyeket egy LUT táblában leírtak szerint átalakítom az ASCII kódjukra, és azt küldöm el. Trükkös lesz. [link]
Kicsit egyszerűbb lenne az od, csak hogy miért téveszti el a kezdést, az jó kérdés.
[ 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
Ez jó ötlet.
Tehát ha hozzáadok a 0-hoz 48-at, akkor kapom az ascii beli 0-t. Magyarul ha elküldöm az 110000 -t a terminálnak, akkor egy 0-t kell lássak a cat-al. (és így tovább)
Még hozzáadni sem kell, egy "case" függvénnyel kvázi statikusan le lehet írni, hogy ha x a bemenet, akkor y a kimenet, a mindössze 10 érték miatt ez nem is bonyolult.
Ha az egészet befoglalom STX, ETX karakterek közé (vagy valamelyik hasonló közé), akkor a cat ezt meg fogja érteni, vagy kitolja ezeket is a fájlba?
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
Ohh tényleg, hiszen 4 biten jön be a BCD szám, csak elé kell tenni még 2-t. FPGA-ban ez meg különösen egyszerű
Ebéd után remélem már tudok mondani valami eredményt.
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
Megvan a válasz, a cat érti az új sor (decimális 10) karakterét, valszeg a többi vezérlő karaktert is. Gyönyörűen írogatja a dolgokat ilyen formában, ha 9. byte az új sor byte-ja.
xxxxyyyy
xxxxyyyy
xxxxyyyyMost annyi kellene, hogy valamilyen módon szétszedem xxxx yyyy -ra a 8 számjegyet, hogy lehessen osztani yyyy -t xxxx -el. Tegyek be valami szeparáló karaktert, amire egy függvény rá tud keresni, vagy számolgassak karaktereket?
Mondjuk ez a bin -> bcd átalakítás nem volt éppen egyszerű téma.
[ 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
Igen, a shell egész számos. Az awk alkalmas a 10-es alapú logaritmus számolására is?
Ez az awk szimpatikus, de még sosem használtam. Talán C-nél kellene maradnom, bár sosem tanították meg rendesen, így igazából az sem annyira az én világom.
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
Egy ilyen awk szcriptet, mondjuk egy fájlt hogyan lehet használni? Pl. arra gondolok, mint mikor egyszerű C kódot fordítok gcc-vel terminálban, és az eredmény xyz.o fájl egyből futtatható. Ez awk-n is ilyen?
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
Tehát akkor ez úgy van, hogy írok egy .awk fájlt ilyen módon:
#!/bin/awk -f
BEGIN {
számolós kód
.
..
...
exit;
},majd pedig az egészet meghyvom így a terminálban:
awk -f program.awk ?
Nem egy soros terminálos cuccban gondolkodok, mert később még jó lenne a pontokat betenni egy egyszerű 2D koordináta rendszerbe. Bár ez már hyper advanced lesz nekem.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
Na arra rájöttem, hogy ilyen formában gondolod az awk indítását terminálban:
awk -f program.awk /dev/ttyUSB0
Ebben az esetben ha jól értem a FAQ-ot, a "FILENAME" változó jelenti a /dev/... -t, és ezzel kell hivatkozni rá, vagyis ez a standard input.
Egyszer ennyit írtam az awk fájlba (a txt fájl létezik):
OUTPUT="/home/pa.... /output.txt
FILENAME > OUTPUT
Ez annyit csinál, mintha azt írnám a terminálba, hogy cat /dev/ttyUSB0. Szóval csak kiírja az értékeket. Innen jó lenne egy kis segítség valamilyen szinten. Gugliztam egy kört, de valahogy nem akar előjönni egy érthető awk leírás, amivel tovább tudnék lépni.
[ 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
Tehát ilyen formában, "egysorosként"?
awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }' /dev/ttyUSB0
Ebben az esetben gondja van a filenévvel.
awk: (FILENAME=/dev/ttyUSB0 FNR=1) fatal: 0-val osztás kísérleteMindenképpen bele kellene terveznem valami "start karakter" felismerést majd, azt fixen bele fogom tenni az fpga programjába. Ahogy nézem, csak úgy biztosítható, hogy a jó számjegytől kezdjek el rögzíteni.
[ 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
Hmm, beírva az .awk fájlba az osztásos sorodat, valamint a végére a FILENAME szót, akkor nem rögtön kapom a div 0-t, hanem amikor a modulom elküld valamit, addig csak vár. Így gondolom nem a port olvasása a gond.
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
No, megvan végre a log_10() funkció is.
function log10(x) {\
return log(x)/log(10.0);\
}\
{a=substr($0,0,4); b=substr($0,4,4); if (a > 0) printf "%d,%d,%f\n",a,b,20*log10(b/a); }Így már jók a kiszámolt erősítés értékek. Ezeket kellene átirányítanom egy fájlba kezdésnek. Per pill még nem sikerült.
Valamint néha a 2. szám elcsúszik 1-2 értékkel, ezzel kezdenem kell valamit.
[ 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 #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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
Új hozzászólás Aktív témák
- Politika
- Kaspersky Antivirus és Internet Security Fórum
- Folytatja a leépítéseket a Tesla
- Íme az Assassin's Creed Shadows első előzetese
- Android játékok topikja
- Fejhallgató erősítő és DAC topik
- Gyúrósok ide!
- Milyen program, ami...?
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- Kínai, és egyéb olcsó órák topikja
- További aktív témák...
- Eredeti Windows, telepítéssel! Digital Doctor Számítógép Szerviz
- World of Warcraft Shadowlands Collectors edition EU EN
- Steam kulcsok - UTALÁS/REVOLUT
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest