Re: Serial RTS-CTS handshaking
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
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
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
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
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
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
>> 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
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. á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
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