Hirdetés

2024. április 24., szerda

Gyorskeresés

Hozzászólások

(#851) lapa válasza bambano (#850) üzenetére


lapa
veterán

szuper, köszi.

(#852) MacCaine


MacCaine
őstag

Érdekes feladatba ütköztem: generálni kellene egy file-t, amiben soronként billentyűzet-szekvenciák vannak. Valami ilyesmi:

qayxsw
wsxcde
1qayxsw2
2wsxcde3
9ijnbhu8
6zhnmju7

Természetesen minden variáció kellene, magyar és angol billentyűzet-kiosztással is.

Lehetséges egyáltalán egy ilyet legenerálni scriptből? :F

(#853) Jester01 válasza MacCaine (#852) üzenetére


Jester01
veterán

Lehetséges egyáltalán egy ilyet legenerálni scriptből?

Már miért ne lenne lehetséges. Az a kérdés, érdemes-e.

Jester

(#854) CPT.Pirk


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)

(#855) MacCaine válasza Jester01 (#853) üzenetére


MacCaine
őstag

Miért ne lenne érdemes? :F

(#856) Jester01 válasza MacCaine (#855) üzenetére


Jester01
veterán

Mert esetleg macerásabb mint más nyelven.

Jester

(#857) Jester01 válasza CPT.Pirk (#854) üzenetére


Jester01
veterán

Ha nem csak lsusb-vel látszik, hanem ténylegesen soros portként is (pl. /dev/ttyUSB0), akkor igen egyszerűen el lehet ezt követni.
Syslog részlet:
kernel: usb 3-1: new full speed USB device number 29 using ohci_hcd
kernel: usb 3-1: New USB device found, idVendor=067b, idProduct=2303
kernel: usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
kernel: usbcore: registered new interface driver usbserial
kernel: USB Serial support registered for generic
kernel: usbcore: registered new interface driver usbserial_generic
kernel: usbserial: USB Serial Driver core
kernel: USB Serial support registered for pl2303
kernel: pl2303 3-1:1.0: pl2303 converter detected
kernel: usb 3-1: pl2303 converter now attached to ttyUSB0
kernel: usbcore: registered new interface driver pl2303
kernel: pl2303: Prolific PL2303 USB to serial adaptor driver

Nekem például hőmérők vannak így bekötve, az értékeket pedig egy ilyen script rész logolta:

while true
do
echo -ne "#03\r" >/dev/ttyUSB0
v=`dd if=/dev/ttyUSB0 bs=42 count=1 2>/dev/null`
d=`date --rfc-3339=seconds -u`
echo "${d:0:16}${v//+/;}" >>temp.txt
sleep 60
done

[ Szerkesztve ]

Jester

(#858) CPT.Pirk válasza Jester01 (#857) üzenetére


CPT.Pirk
Jómunkásember

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)

(#859) MacCaine válasza Jester01 (#856) üzenetére


MacCaine
őstag

Az nem baj. Viszont legalább nagyjából értem a kódot. Más nyelven még ennyit se tudok... :(

(#860) bambano válasza bambano (#828) üzenetére


bambano
titán
LOGOUT blog

ez nyerte a versenyt és jónak tűnik.
thx mindenkinek

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#861) Jester01 válasza MacCaine (#859) üzenetére


Jester01
veterán

Először is kell egy táblázat, ami minden billentyűhöz megmondja a szomszédait. Aztán szépen rekurzívan bejárod adott hosszig, ügyelve, hogy ismétlődés ne legyen (már ha ez feltétel). Például valahogy így:

#! /bin/bash

len=3
declare -A layout
layout["a"]=qwsxz
layout["s"]=wedcxzaq
layout["d"]=erfvcxsw
layout["f"]=rtgbvcde
# ...

function process
{
local text="$1"
local options="$2"
local i
local letter
local newtext
local next

for ((i=0; i<${#options}; i+=1))
do
letter=${options:i:1}
if [ "${text/$letter/}" = "${text}" ]
then
newtext="${text}${letter}"
if [[ ${#newtext} == $len ]]
then
echo "$newtext"
else
next=${layout[$letter]}
if [[ ${#next} > 0 ]]
then
process "$newtext" "$next"
fi
fi
fi
done
}

for i in "${!layout[@]}"
do
process "" "$i"
done

Jester

(#862) sonar


sonar
addikt

Sziasztok,

Segitségeteket szeretném kérni, mert még új vagyok a shell scriptelésben és elakadtam.
Olyat szeretnék, hogy ha
$1 nem "LDDS_" -el kezdődik akkor tegye automatikusan tegye elé.
Google-ztam, de nem igazán találtam használható megoldást.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#863) sonar


sonar
addikt

Illetve lenne még egy kérdésem.
Nem tudjátok, hogy maximum mennyi command line argument lehet?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#864) bambano válasza sonar (#863) üzenetére


bambano
titán
LOGOUT blog

ez kernel paraméter.
a parancssor teljes méretét a getconf ARG_MAX mondja meg, ebből még le kell vonni a környezet méretét (env | wc -c)

azt nem tudom, darabszám limitáció van-e, a fenti az csak méret limitáció.
ha túl sok a paraméter és attól félsz, hogy ezért kiakad, akkor xargs manual olvasgatása segít :)

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#865) sonar


sonar
addikt

Ezzel mi lehet a gond?
find . -iname *.aod -exec cp -p "{}" /volume1/SID/0/{`sed 'y/aod/AOD/`} \; -print0

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#866) bambano válasza sonar (#865) üzenetére


bambano
titán
LOGOUT blog

első ránézésre a páratlan aposztróf biztos gond, az y/aod előtti aposztrófnak nem látom a párját.

szerk:
második ránézésre a sed szabvány bemenetén várja a szerkeszteni valót, így az a sed nem tudom, honnan kapna adatot.

harmadik ránézésre a -iname *.aod-ban a *.aod-ot mindenképpen aposztrófok közé tenném, mert ha az aktuális könyvtáradban van egy aod nevű fájl, akkor a shell helyettesíteni fogja a nevét.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#867) sonar válasza bambano (#866) üzenetére


sonar
addikt

Az aposztróf valóban hiányzott, de sajnos nem müxik még igy sem.
A lényeg, hogy bizonyos kiterjesztést nagybetűsen kellene átmásolni X-ből Y-ba.
ash shell és nincsen tr parancs
Valami még mindig hibádzik
find . -maxdepth 1 -iname "*.txt" -exec cp -p {} /tmp/{`sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`} \; -print0

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#868) bambano válasza sonar (#867) üzenetére


bambano
titán
LOGOUT blog

de azzal, hogy forkolsz egy sed-et bemenet nélkül, mi a célod?

másrészt meg a nevet aposztrófok közé kell tenni, nem idézőjelek közé, mert különben a shell kifejtheti.

szerintem valami ilyesmit kellene:
find . -name '*.aod'| sed -e 's,.*,cp & /uj/konyvtar/&,' -e 's,.aod$,.AOD,' | sh

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#869) sonar válasza bambano (#868) üzenetére


sonar
addikt

Megy a find aposztróf és idézőjel nélkül is.
Amit te irtál az működik, de csak a kiterjesztést (ami jelen esetben .aod) teszi át nagybetűsre. Én azt szeretném, hogy az egész filenév nagybetűs legyen.

Amit én irtam az külön külön működik, de a bajom az amit te is irtál, hogy nincs a sednek bemenete. Csak nem tudom, hogy hogyan adjam át neki.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#870) bambano válasza sonar (#869) üzenetére


bambano
titán
LOGOUT blog

ezt próbáld meg kipofozni:

-exec cp -p {} /tmp/$(echo {} | sed ...)

szerintem nem kell a sed köré a {}, viszont kell egy parancshelyettesítés, ami mostanában $( ) (nem aposztróf, mert az obsoloted), és úgy láttam, hogyha többször írod a {}-t, akkor a find mindegyiket helyettesíti, ezért lehet egy echo {}-val etetni a sedet.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#871) CPT.Pirk


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. :B

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#872) bambano válasza CPT.Pirk (#871) üzenetére


bambano
titán
LOGOUT blog

sima usb? nem usb-s sorosport?
bash-ban nincs usb támogatás, egyébként egyszerű ellenőrizni: ldd /bin/bash és ha van benne libusb hivatkozás, akkor lehet benne, ha nincs, nincs :)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#873) dabadab válasza CPT.Pirk (#871) üzenetére


dabadab
titán

A /proc/bus/usb/ konyvtarban ott vannak az USB eszkozoket reprezentalo file-okat, azokat tudod bizergalni (megfelelo jogosultsaggal). Tisztan bashbol mondjuk a logaritmus nem fog menni, mar csak azert sem, mert a bash csak egesz szamokkal tud szamolni, szoval ahhoz kenytelen leszel kulso programot hivni (pl. ott a dc, a remek forditott lengyel jelolesevel).

DRM is theft

(#874) bambano válasza dabadab (#873) üzenetére


bambano
titán
LOGOUT blog

dc maga alá húzza a bc-t, akkor meg minek...

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#875) dabadab válasza bambano (#874) üzenetére


dabadab
titán

"dc maga alá húzza a bc-t"

szerk: nekem ugy tunik, hogy nem, nem is dependel ra, meg semmi, csak kozos source-uk van.

[ Szerkesztve ]

DRM is theft

(#876) CPT.Pirk


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)

(#877) bambano válasza dabadab (#875) üzenetére


bambano
titán
LOGOUT blog

akkor lehet, csak openwrt-ben dependel rá, de már jártam így, hogy dc-t akartam feltenni, mert az milyen kicsi, erre húzta magával a bc-t is...

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#878) Jester01 válasza CPT.Pirk (#876) üzenetére


Jester01
veterán

dc és bc "számológép" programok.
Logaritmus bc-vel például:

$ echo "l(2.71)" | bc -l
.99694863489160953206

Olvasáshoz legegyszerűbb ha végtelen ciklusban simán pollozod a /dev/ttyUSB0-t és kész.

Lásd még #857, bár nekem parancsot kellett kiküldeni, illetve fix byteot olvasni.

[ Szerkesztve ]

Jester

(#879) bambano válasza CPT.Pirk (#876) üzenetére


bambano
titán
LOGOUT blog

oké, tehát te nem usb-t fogsz kezelni, hanem soros portot. nagyon nem mindegy.
[link]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#880) CPT.Pirk válasza bambano (#879) üzenetére


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)

(#881) bambano válasza CPT.Pirk (#880) üzenetére


bambano
titán
LOGOUT blog

akkor nincs jobb ötletem, mint az expect, a tip, a cu és a minicom programok vagy azok forrásának olvasgatása :)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#882) lapa


lapa
veterán

üdv. lett hőmérőm sysfs-ben, az alábbi dolgot kéne megcsinálnom:

cat `ls -R /media/temp/10.*/temperature` >> /tmp/temp

ez kirakja a hőmérsékleteket a fájlba, de nem tudom ez a megoldás hatékony-e egyátalán. valszeg az lenne a jobb, ha felsorolnám az összes kiolvasandó filet egymás alá, vagy ilyesmi. de ezt még megoldom.

a következő bajom, hogy hogyan lesz nekem új sorom a fájlban. azt megtaláltam, hogy ez \n, de nem akart még összejönni a helyes parancs.

a harmadik meg, hogy ezt 10-20 mp-ként kéne elindítani, vagyis valami hatékony számlálás is kéne, ami nem eszi a cpu-t. legrosszabb esetben maradok a cron percnél.

ezekre kéne nekem valami frappáns. ja, meg minden sor elejére egy dátum, de az asszem $now vagy ilyesmi.

köszi az ötleteket.

(#883) bambano válasza lapa (#882) üzenetére


bambano
titán
LOGOUT blog

nem, nem hatékony, egy felesleges ls-t forkolsz, van benne egy felesleges processz helyettesítés.

szerintem a cat /media/temp/10.*/temperature is működne.

a 20 másodpercre azt javaslom, hogy cronból indítsd 5 percenként, és benne legyen egy ilyen ciklus:

for i in $(seq 1 15); do
cat ...
sleep 20
done

a dátumra meg a sorokra tördeléshez esetleg sed.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#884) lapa válasza bambano (#883) üzenetére


lapa
veterán

köszi a segítséget, ilyet hoztam végül össze:

#!/bin/sh

lejar=`date --date='3580 second'`

for i in $(seq 1 9999999); do

if [ $(($date - $lejar)) < 0 ]; then

miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15

else
exit 0

fi
done

sajnos mint kiderült nem jó a tick szerinti ciklus, mert a cat... eltart jópár másodpercig (1-wire összes szenzor lekér). még nem teszteltem működik-e egyátalán.

(mindemellett ezen a ponton még ki is kéne írnia egy második fájlba az elmúlt egy órában történteket, de azt már megoldom cat -tal.)

köszi mindig.

[ Szerkesztve ]

(#885) bambano válasza lapa (#884) üzenetére


bambano
titán
LOGOUT blog

#! /bin/bash

for i in $(seq 1 179); do

date +"%Y.%m.%d %H:%M:%S" >> /tmp/sensor
cat /media/sensor/10.*/temperature >> /tmp/sensor &
sleep 20
done
wait
cat /tmp/sensor >>oraimentes.txt/media/sensor/10.*/temperature

illetve lehet közvetlenül abba a fájlba tenni, ami a végleges helye.
fájlnévben is működik a parancsbehelyettesítés, pl:

cat /media/sensor/10.*/temperature >>/var/log/sensorok/$(date '+%h%m')/oralog.txt

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#886) lapa válasza bambano (#885) üzenetére


lapa
veterán

igen, var/log/-ban van most, és nem is akkora gond, mert ssd. viszont jobban szeretném, ha a /home/ -on belül is meglenne. és akkor gondoltam inkább óránként egy spinup-spindown és közte meg mehet a /tmp/-be, ami ramdrive.

de az is lehet, hogy hagyom az ssd-re írni 20 mp-nként, aztán néha kimásolni a /home/-ba.

egy fájlban lesz, de az jó hogy írtál azért ilyen sample-t is.

mondjuk még nem teljesen világos, hogy ez miért oldja meg a késleltetést.

amúgy csináltam egy újabb rev-et, de nem műx:

#!/bin/bash

touch /tmp/sensor

most=`date +%s`
lejar=`date --date='3580 second' +%s`

while [ $most - $lejar < 0 ]
do

most=`date +%s`
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15

done

erre aszongya:

./sensor.sh: line 8: 0: No such file or directory

UPD: ahh:

while [ $most - $lejar < 0 ] --> while [ $most -le $lejar ]

[ Szerkesztve ]

(#887) lapa


lapa
veterán

most már mindent összeraktam, műxik is szépen. a korábbi logot viszont konszolidálnom kell. a feladat relatíve egyszerű:

2011.03.10 16:49:16 7.25 20.94 7.94 5.94 22.06
2011.03.10 16:49:26 7.25 20.94 7.94 5.94 22.06
2011.03.10 16:49:36 7.25 20.94 7.94 5.88 22.06

vannak ilyen, szóközökkel elválasztott adataim. az első két oszlop az idő, nekem meg kéne cserélnem a negyedik és ötödik oszlopot.

azaz a fentiek ilyenné alakulnának:

2011.03.10 16:49:16 7.25 7.94 20.94 5.94 22.06
2011.03.10 16:49:26 7.25 7.94 20.94 5.94 22.06
2011.03.10 16:49:36 7.25 7.94 20.94 5.88 22.06

ígérem ez az utolsó, aztán nyugton maradok a hőmérőzésemmel egy jó darabig.

[ Szerkesztve ]

(#888) bambano válasza lapa (#887) üzenetére


bambano
titán
LOGOUT blog

nem írom le a megfejtést, mert sorminta lenne belőle, de kb:

sed -e 's/\([^ ]*\) ...

ez a fordított per zárójel kockazárójel kalap szóköz kockazárójel * fordítottper zárójel majd utána egy szóköz, ebből rakjál egymás után annyit, ahány oszlopod van.
majd erre a \1 \2 \3 \5 \4 formában lehet hivatkozni a sed-ben.
tehát ilyesmi:
sed -e 's/a fentiek/\1 \2 \3 \5 \4/'

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#889) lapa válasza bambano (#888) üzenetére


lapa
veterán

a szokásos örök hála. érteni nem értem, de rekonstruáltam.

(#890) bambano


bambano
titán
LOGOUT blog

itt az ideje, hogy megint tanítsatok nekem valamit:)
egy fájlban ethernet címek vannak, amit greppel válogatok. ami kijön a csőből, azt át kellene alakítani pontokkal elválasztott tizes számrendszerbeli alakra. a nyelv bash.
tehát jön egy:
00:1A:AD:7A:13:44 string az inputon, vagy ugyanez kisbetűvel, és kellene belőle egy 0.26.173.122.19.68 string.

tia

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#891) bambano válasza lapa (#889) üzenetére


bambano
titán
LOGOUT blog

az első, hogy amit zárójelek közé raksz, azt a sed egy csoportként kezeli, és \sorszám formában lehet rá hivatkozni. de mivel itt a zárójel nem szöveg, hanem vezérlőjel, ezért visszaperrel "eszképelni" kell.

a csoporton belül meg annyi van, hogy a kalap^ negál, tehát bármi, ami nem mögötte van, konkrétan most szóköz, tehát bármi, ami nem szóköz, a * miatt ebből tetszőleges mennyiség. utána berakjuk azt a mezőelválasztó szóközt, amit említettél a feladatban, majd ezt ismételjük a szükséges darabszámszor. a végén pedig \1 \2 stb. formában előszedetjük a sed-del, amit az adott csoportra rá tudott húzni.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#892) Jester01 válasza bambano (#890) üzenetére


Jester01
veterán

while read ip
do
while [ ${#ip} -gt 0 ]
do
echo -n $(( 0x${ip:0:2} ))
if [ ${#ip} -gt 2 ]
then
echo -n .
fi
ip=${ip:3}
done
echo
done

MOD: vagy ez a borzalom :C
while read ip
do
eval echo '$((0x'${ip//:/)).\$((0x}'))'
done

[ Szerkesztve ]

Jester

(#893) bambano válasza Jester01 (#892) üzenetére


bambano
titán
LOGOUT blog

:R :R :R :R :R

a második, az szép... ascii art kick járna érte a régi ircen:)

egyébként én is valami hasonlóra jutottam a guglizás során, hogy printf "%d.%d...." és stringműveletekkel szedem szét a mac-et, de azt nem láttam, hogy a hex-dec konverziót a shell végzi, nem a printf, ezért nem kell printf.

szép :)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#894) CPT.Pirk


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 bitek

Ezeket 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)

(#895) Jester01 válasza CPT.Pirk (#894) üzenetére


Jester01
veterán

A soros portod az stty-vel állíthatod be, például stty -F /dev/ttyUSB0 9600 cstopb -parenb

Hogy milyen formában szeretnéd az adatokat az nem tiszta. Tegyük fel, hogy 2 darab olvasható decimális számot szeretnél, akkor például od -An -d -N4 /dev/ttyUSB0

Jester

(#896) bambano válasza CPT.Pirk (#894) üzenetére


bambano
titán
LOGOUT blog

vannak félelmeim, hogy ezt nem shellben kellene...

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#897) CPT.Pirk válasza Jester01 (#895) üzenetére


CPT.Pirk
Jómunkásember

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)

(#898) Jester01 válasza CPT.Pirk (#897) üzenetére


Jester01
veterán

man od

[ Szerkesztve ]

Jester

(#899) CPT.Pirk válasza Jester01 (#898) üzenetére


CPT.Pirk
Jómunkásember

Oh tényleg, nem volt telepítve nálam a man-db eddig.

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#900) CPT.Pirk válasza Jester01 (#895) üzenetére


CPT.Pirk
Jómunkásember

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)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.