» »

Pisanje iz com porta v datoteko(c linux)

Pisanje iz com porta v datoteko(c linux)

i.r.babun ::

Lep pozdrav,
imam sledeci problem:
v Linuxu sem se priklopil na serijski port, ter z njega uspesno berem dolocene nize.

problem je, da mi tega noce vpisati v doloceno datoteko!
ce recimo namesto imena porta (/dev/ttyS0) podam ime neke datoteke, mi zadeva deluje, drugace pa mi naredi le prazno datoteko in vanjo nic ne vpise.

Ali je mozno, da to ne deluje, ker sem za serijski port potreboval nastaviti dolocene parametre (parity, stop bit, data bits), ter da potem tudi izhodno datoteko poskusa zapisovati s temi parametri?

kako bi resil ta problem?

slawc ::

mogoce nisi pravilno odprl datoteko, vsekakor bi bilo bolj koristno, ce bi pastal source.
LP, Slawc

i.r.babun ::

jaz si moram za port nastaviti parametre
(no parity 8 data bits, 1 stop bit ,itd.)
potem mi verjetno poskusa tudi navadno datoteko odpreti kot port (unix tretira oboje kot FILE). Kako naj si nastavim nazaj default za navadno datoteko?

slawc ::

ne, navadno datoteko ti bo odprl kot navadno datoteko, ko pa spreminjas nastavitve com porta se tako in tako sklicujes na handle com porta in ne fileta (handle ti vrne funkcija open)

Nekaj si zamocil pri odpiranju datoteke. Pastej source.
LP, Slawc

BigWhale ::

code snippet, bi bil zlo v pomoc... :)

Ampak naceloma bi moralo delat, brez da karkoli spreminjas.

ooux ::

Ali je kdo ze poizkusil stty -a -F/dev/tty0S. Tole vam bo izpisalo nastavitve za port.

Seveda bi pred tem bilo zazeljeno da precitas vsaj man stty :)

Zgodovina sprememb…

  • spremenil: ooux ()

ooux ::

i.r.babun, iz tegale spodaj ni cisto jasno kaj delas. Res bi bilo dobro, da das kode fragment.
mam sledeci problem:
v Linuxu sem se priklopil na serijski port, ter z njega uspesno berem dolocene nize.

problem je, da mi tega noce vpisati v doloceno datoteko!
ce recimo namesto imena porta (/dev/ttyS0) podam ime neke datoteke, mi zadeva deluje, drugace pa mi naredi le prazno datoteko in vanjo nic ne vpise.
Probajmo s skriptom. Najprej povej, ali lahko citas port z :
cat /dev/tty0S
Ko bos uspel s tem potem pa poizkusi
echo "vrstica" > myFile
Koncno naredi poizkusi
cat /dev/tty0S > myFile
Ce ti bo ratalo vse zgornje, potem se sele loti C-ja.

BigWhale ::

Ma, saj je rekel, da iz porta ze uspesno bere...
To naceloma ni problem... ampak res.. code fragment... :)

ooux ::

Da bere iz porta se ne pomeni, da je res uspesno. Ce je port konfiguriran za tty controle bo cital le delno. Port mora imeti tz. raw setting (optiimalno je) :
c_iflag &= ~(INLCR | ICRNL | IUCLC | ISTRIP | IXON | BRKINIT);
c_oflag &= ~OPOST;
c_lflag &= ~(icanon | ISIG | ECHO);
c_cc[4] = 5;
c_cc[5] = 2;
Ne vem kako tocno je s tem na Linux-u, a tako kot vidite zgoraj, sem obicajno konfiguriral port na Unixu v raw mode, da sem eliminiral stranske efekte URAT control. ;)

Lahko pa je tudi, da ima problem z "-rwx-..." na output-u. Skratka brez njegove izvorne kode mu bo tezko pomagat.:\


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Shell scripta

Oddelek: Programiranje
61438 (1042) BigWhale
»

ATI linux gonilnliki in resolucija

Oddelek: Operacijski sistemi
122042 (1929) roli
»

c++ serijski port

Oddelek: Programiranje
252551 (1942) fx
»

LPT porti in linux...

Oddelek: Operacijski sistemi
152505 (2312) Trojaner
»

Linux & Dial-up

Oddelek: Operacijski sistemi
101221 (1040) Gh0st

Več podobnih tem