Re: Serial RTS-CTS handshaking

2006-04-10 Thread Kiss Gabor

In article <[EMAIL PROTECTED]>,
Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> Szeretnem elerni, hogy a kernel kezelje a soros port RTSCTS handshaking-et.
> A jelenseg az, hogy ha beallitom a hardware flow control-t:
> 
>struct termios ttyset;
>   ...
>ttyset.c_cflag |= HARDWARE_FLOW_CONTROL;
> 
> akkor nem mozdul az rts kimenet.

Valamit tan felreertek, de HARDWARE_FLOW_CONTROL szimbolumot nem ismerek.
Hogy fordult ez le neked?
CRTSCTS a neve.
(Vagy indultal az IOCCC-n? ;-)

Gabor
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-10 Thread Zidarics Zoltan
hello,

2006. április 10. 09.38 dátummal Kiss Gabor ezt írta:
> In article <[EMAIL PROTECTED]>,
>
>   Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> > Szeretnem elerni, hogy a kernel kezelje a soros port RTSCTS
> > handshaking-et. A jelenseg az, hogy ha beallitom a hardware flow
> > control-t:
> >
> >struct termios ttyset;
> > ...
> >ttyset.c_cflag |= HARDWARE_FLOW_CONTROL;
> >
> > akkor nem mozdul az rts kimenet.
>
> Valamit tan felreertek, de HARDWARE_FLOW_CONTROL szimbolumot nem ismerek.
> Hogy fordult ez le neked?
> CRTSCTS a neve.
> (Vagy indultal az IOCCC-n? ;-)
Valojaban ez az rxtx csomag, amelyet java alol hasznalok. A forrasaban van egy 
define:

#define HARDWARE_FLOW_CONTROL CRTSCTS

Irtam a szerzonek, feltettem neki is a kerdest, O ajanlotta, hogy a kernel 
korul keresgeljek. 

udv,
-- 
Zoltan Zidarics programmer
PTE University Pecs, Hungary
icq: 43288694
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Kiss Gabor

In article <[EMAIL PROTECTED]>,
Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> Ha a minicom-ban beallitom a hw flow controll-t, akkor megvarja a CTS 1=20
> allapotat, de az RTS-t nem mozgatja :(.

Talan arrol van szo, hogy 2400 bps-sel
nem tudod olyan gyorsan pumpalni az inputot,
hogy a kernel es minicom ne lenne kepes fogadni
es lazan lekezelni.
Van valami bizonyiteka a karaktervesztesnek?

kissg
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Zidarics Zoltan
hello,

2006. április 11. 09.46 dátummal Kiss Gabor ezt írta:
> In article <[EMAIL PROTECTED]>,
>
>   Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> > Ha a minicom-ban beallitom a hw flow controll-t, akkor megvarja a CTS
> > 1=20 allapotat, de az RTS-t nem mozgatja :(.
>
> Talan arrol van szo, hogy 2400 bps-sel
> nem tudod olyan gyorsan pumpalni az inputot,
> hogy a kernel es minicom ne lenne kepes fogadni
> es lazan lekezelni.
> Van valami bizonyiteka a karaktervesztesnek?

Szkoppal nezem a kimenetet. 
A minicomban meg sem mozditja az RTS-t, viszont megvarja a CTS-t az adassal.

A doksi szerint:

CTS=1 eseten a "modem" (DCE) adaskesz. Ezutan a gep (DTE) az RTS=1-el adasba 
kapcsolja a modemet, majd elkezd adni. Ezutan az RTS=0 val vetelbe kapcsolja 
a modemet. Itt a problema, mivel az ado chip (16550) egy 16 byte-os puffert 
hasznal, tehat a programbol nem mondhatod azt, hogy 

(*)
-RTS=1
-karakterek a kimenetre
-RTS=0
mivel a karakterek kuldese teljesen aszinkron a kuldo programmal.
Lehetne meg varazsolni az ado puffer ures signalra is, de azt mar akkor kuldi 
a chip, amikor az utolso byte-ot kezdi el kitolni.

Ezert lenne jo, ha a kernel kezelne es nem en.
Szkoppal az latszik, ha a (*) kezi metodust csinalom: 

___
RTS ___| |_
adat -

az adas vege es a valasz eleje kozott cca. 2 mS van, tehat a valasz elejebe 
"harap" bele az RTS=0.

Neheziti a helyzetet, hogy ez egy RS485 MODBUS kommunikacio es mint tudjuk a 
MODBUS az egyik legostobabb protokoll, mivel a keret elso byte-ja 
(RTU modban) az eszkozcim(!). Semmi petting, semmi rakeszules, azonnal a 
lenyeg:)

Szerencsere az eszkoz, amivel beszelgetnem kell, csak akkor tud 2mS-on belul 
valaszolni, ha hibat jelez.:) Ha megertette a parancsot, akkor neki is ra 
kell keszulnie az adasra es akkor 5 mS mulva tud csak valaszolni, tehat ha 
tudok olvasni egy hibatlan keretet, az egyben hasznalhato is :)

Mindenesetre, nem tul megnyugtato es szeretnem raszedni a kernelt.

udv,
-- 
Zoltan Zidarics programmer
PTE University Pecs, Hungary
icq: 43288694
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Kiss Gabor

In article <[EMAIL PROTECTED]>,
Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> hello,
>> > Ha a minicom-ban beallitom a hw flow controll-t, akkor megvarja a CTS
>> > 1=20 allapotat, de az RTS-t nem mozgatja :(.
>>
>> Talan arrol van szo, hogy 2400 bps-sel
>> nem tudod olyan gyorsan pumpalni az inputot,
>> hogy a kernel es minicom ne lenne kepes fogadni
>> es lazan lekezelni.
>> Van valami bizonyiteka a karaktervesztesnek?

> Szkoppal nezem a kimenetet. 
> A minicomban meg sem mozditja az RTS-t, viszont megvarja a CTS-t az adassal.

> A doksi szerint:

Milyen doksi szerint? :-o

> CTS=1 eseten a "modem" (DCE) adaskesz. Ezutan a gep (DTE) az RTS=1-el adasba 
> kapcsolja a modemet, majd elkezd adni. Ezutan az RTS=0 val vetelbe kapcsolja 
> a modemet. Itt a problema, mivel az ado chip (16550) egy 16 byte-os puffert 

Hogy ez micsoda marhasag!
(IMHO. ;-)
A a DTE<->DCE kommunikacio full duplex. Nem kell valtani az adas
es a vetel kozott.

Na varjunk csak!
Neked van valami celberendezesed, es ahhoz adtak valami leirast,
amibol ideztel? Nem a szabvany DCE-krol es DTE-krol beszelsz?
Ha ez a helyzet, akkor nyugodtan add vissza a gyartonak,
hogy csinalja meg szabvanyosra a protokollt.
Es ne merje a szajara venni a DCE es DTE szavakat!

> hasznal, tehat a programbol nem mondhatod azt, hogy 
> (*)
> -RTS=1
> -karakterek a kimenetre
> -RTS=0
> mivel a karakterek kuldese teljesen aszinkron a kuldo programmal.
> Lehetne meg varazsolni az ado puffer ures signalra is, de azt mar akkor kuldi 
> a chip, amikor az utolso byte-ot kezdi el kitolni.
> Ezert lenne jo, ha a kernel kezelne es nem en.
> Szkoppal az latszik, ha a (*) kezi metodust csinalom: 
> ___
> RTS ___| |_
> adat -
> az adas vege es a valasz eleje kozott cca. 2 mS van, tehat a valasz elejebe 
> "harap" bele az RTS=0.

Azt hiszem itt valami felreertes van.
Egy szabvanyos V.24 kommunikacioban az RTS es a CTS egymastol
teljesen fuggetlenul mukodik.

Az RTS-t akkor teszi 0-ba a DTE, ha tele van az input puffere.
Ezt a DCE erzekeli, es leallitja a DCE->DTE adatforgalmat.
Ha a DTE input puffere felszabadul, 1-be teszi az RTS jelet,
mire fel a DCE ismet ingerli a szamitgeped RxD bemenetet.

Mindekozben ha a DCE ugy latja, hogy nem tud mit kezdeni a DTE-tol
erkezo sok adattal, a CTS jelet 0-ba teszi. Ezt a DTE erzekeli,
es leallitja a DTE->DCE adataramlast. Es ellenkezoleg, amikor
a modem ujra szeretne a terminaltol adatot.

A ket folyamatnak az egvilagon semmi koze nincs egymashoz.
Az op.rendszerek es a kommunikacios kartyak eszerint mukodnek.
Ha a te feltelezett szerkezeted maskeppen, akkor nem kompatibilisek.
Pont.

(Az abradon egyebkent nem tudni mit jelentenek az
"adat", "adas", "valasz" szavak. Honnan hova?)

Gabor
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Jeff


Kiss Gabor írta:

Hogy ez micsoda marhasag!
(IMHO. ;-)
A a DTE<->DCE kommunikacio full duplex. Nem kell valtani az adas
es a vetel kozott.
Itt lesz a problema, ugyanis a soros kommunikacio valoban full duplex, 
de itt a kerdezo RS485-ot hasznal, ami egy csavart erparas rendszer, es 
ha egy erparon zajlik a forgalom, akkor az half duplex. Ilyenkor szokas 
a soros port egy nem hasznalt kimenetevel (pl rts-el) atkapcsolni adas 
es vetel kozott. Mivel ez rs-232 viszonylatban tenyleg nem szabvanyos, 
ezert ezt a kernel (imho) soha nem fogja lekezelni.

Udv.
Jeff
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Kiss Gabor

>> A a DTE<->DCE kommunikacio full duplex. Nem kell valtani az adas
>> es a vetel kozott.
> Itt lesz a problema, ugyanis a soros kommunikacio valoban full duplex, 
> de itt a kerdezo RS485-ot hasznal, ami egy csavart erparas rendszer, es 
> ha egy erparon zajlik a forgalom, akkor az half duplex. Ilyenkor szokas 
> a soros port egy nem hasznalt kimenetevel (pl rts-el) atkapcsolni adas 
> es vetel kozott. Mivel ez rs-232 viszonylatban tenyleg nem szabvanyos, 
> ezert ezt a kernel (imho) soha nem fogja lekezelni.

Ach so! Itt egy RS-232 <-> kethuzalos RS-485 konverter van?
Ez gazos. Ez a szerkentyu nem azt a szabvanyt koveti, amit
egy modem. Nem lehet elvarni a kerneltol, hogy a _modemekhez_ _irt_
driverrel meghajtsa. (Kell irni egy sajatot.)
A doboz megtehetne, hogy belul pufferel, es eltakarja
az RS-485 iranyvaltasat a szemunk elol, de ugy latszik ez
nem tul szofisztikalt eszkoz.
Nem vegez protokollkonverziot, pedig ide az kellene.

Tenyleg kezzel kell mozgatni az RTS-t, vagy atallni 4 huzalos atvitelre.

Lassuk az eredeti problemat!
| Ha kezzel mozgatom, akkor megy rendesen, de sajnos nagyon nehez pontosan 
| atfedni a kuldott csomagot, raadasul az ellenallomas nagyon gyorsan valaszol, 
| igy lecsuszom a keret elejerol. 

Mit jelenthet az, hogy "atfedni a kuldott csomagot"? :-o
Nem lehetne valahogy kesleltetni a valaszt?
Pl. nem zavaro, amde ertelmetlen karakterek kuldesevel?

kissg
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Robert Szabo


En annak idejen irtam RS485 kernel drivert meg a 2.4-os kernelhez 
Sokat tokoltem rajta, hogy is kene csinalni, es a vegen az a megoldas 
valt be a legjobban, hogy
az RS485 iranykapcsolo ment az RTS labra, es a driver kapcsolta mindig 
adas elott es adas vegen...
A trukk az egeszben az volt, hogy az RS485 ic-n bekapcsolhatod az 
echot... illetve echo mindig van... szoval adasnal tudtam mennyit dobtam 
bele az UART FIFO-ba, es kiszamoltam, az mennyi ido alatt fog kimenni...
utana felhuztam egy kernel timer, ami ha lejart, akkor visszahuzta az 
RTS-t... az uart egy exar volt 128byteos bufferral, de ment a ST16552-n 
(asszem az volt) hibalanul...
Amikor tobb adat kerult bele a pufferba, akkor csak meghosszabbitottam a 
timer...


2400Baudon tokeletesen mukodott, es 10ms alatt volt a reakcio ido... 
(2.4 kernel: 100HZ-es felbontas)


-Robbie

_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Zidarics Zoltan
2006. április 11. 13.28 dátummal Kiss Gabor ezt írta:

>Hogy ez micsoda marhasag!
>(IMHO. ;-)
>A a DTE<->DCE kommunikacio full duplex. Nem kell valtani az adas
>es a vetel kozott.

>Na varjunk csak!
>Neked van valami celberendezesed, es ahhoz adtak valami leirast,
>amibol ideztel? Nem a szabvany DCE-krol es DTE-krol beszelsz?
>Ha ez a helyzet, akkor nyugodtan add vissza a gyartonak,
>hogy csinalja meg szabvanyosra a protokollt.
>Es ne merje a szajara venni a DCE es DTE szavakat!

Lehet igy is, de akkor valoszinuleg nem hozzam fognak fordulni, hogy dolgozzam 
nekik :)
Amint azt irtam, ez egy rs485 kutyu, ami raadasul meg sulyosbitva van egy 
modbus protokollal, valamint egy nagy neves gyarto gyartmanya (Schneider 
Electric). 
Megirhatnam nekik, hogy dugjak fel maguknak, de 

1. valoszinuleg ez nem nagyon hatna meg oket :)

2. Rogton azt mondanak, hogy Windows alatt tokeletesen mukodik, miert 
szenvedek ilyen idejetmult oskovulettel mint a linux/java:)

nos ezt a sanszot nem szeretnem megadni nekik.

udv,
-- 
Zoltan Zidarics programmer
PTE University Pecs, Hungary
icq: 43288694
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux


Re: Serial RTS-CTS handshaking

2006-04-11 Thread Kiss Gabor

In article <[EMAIL PROTECTED]>,
Zidarics Zoltan <[EMAIL PROTECTED]> writes:
> 2. Rogton azt mondanak, hogy Windows alatt tokeletesen mukodik, miert 

De meg is dolgoztak erte.
(Nyilvan ok is sajat drivert mellekelnek a szerkezethez.)
Sajnos neked is azt kell tenned.

kissg








-- 
Kolmogorov valoszinuleg elt,
Kolmogorov valoszinuleg el, 
Kolmogorov valoszinuleg elni fog.
_
linux lista  -  linux@mlf.linux.rulez.org
http://mlf2.linux.rulez.org/mailman/listinfo/linux