ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Vezérlőkarakterek - Wikipédia

Vezérlőkarakterek

A Wikipédiából, a szabad enciklopédiából.

A számítástechnikában, a vezérlő karakter vagy nem nyomtatható karakter, angol kifejezéssel control character, egy olyan kód (egy szám) egy kódkészletben ami önmagában nem felel meg egyetlen írott szimbólumnak sem. Az ASCII kódtábla minden 32 alatti eleme (technikailag C0 vezérlő kódkészlet) közéjük tartozik, többek között a BEL (ami hangjelzést vált ki, ha a végberendezés veszi), a SYN (ami szinkronizálja jeleket), és az ENQ (egy jelzés, ami kivált valamilyen választ a vételét követően, így ellenőrizhető, hogy az összeköttetés még fennáll-e). A Unicode szabvány újabb nem nyomtatható karakterekkel egészítette ki vezérlő karakter készletet. Az ASCII és az ISO 8859-n által használt részletes C0 és C1 vezérlő kódok tábláit lásd a megfelelő szócikkeknél.

Tartalomjegyzék

[szerkesztés] ASCII vezérlő karakterek

Az ASCII vezérlő karaketerei közül a legismertebbek

  • 7 (bell-harang v. csengő), amely vétele esetén valamilyen figyelmeztető jelet (többnyire hallható) vált ki
  • 8 (backspace- visszalépés), amely az utolsó nyomtatott karakter törlésére vagy felülnyomtatásra (overprint) használható
  • 9 (horizontal tab – vizszintes tabulátor), A jelenlegi nyomtatási pozíciót megadott adott számú szóközzel jobbra helyezi
  • 10 (line feed-soremelés), a legtöbb UNIX systems és változataik a sor végének jelzésére használják
  • 12 (form feed-lapdobás), hatására a nyomtató új lapot kezd (lapdobás) vagy az aktuális nyomtatási pozíció egy új lap első sorának kezdő pozíciójára helyeződik át, a képernyős kijelzők törlik az aktuális ernyőtartalmat.
  • 13 (carriage return-kocsi vissza), a sor végének jelzésére használja a Mac OS, az OS-9, a FLEX (és változataik). A kocsi vissza/soremelés – carriage return/line feed – párosítást használja a CP/M-80 és a belőle kinőtt rendszerek, egészen a DOS-ig valamint a Windows, és az alkalmazási réteg protokolok, mint a HyperText Transfer Protocol
  • 27 (escape).

Időnként a modern alkalmazások ugyanúgy használják, mint a régebbi alkalmazások a 4 (Átvitel vége – end of transmission) kódot használták, mint a Unix shell session vagy a PostScript nyomtató adatátvitelnél.

A 27 (Escape) kód több funkcióval is bír. Szinte ez a legtöbbet használt vezérlő karakter: az alapkoncepció szerint a nyomtatható és eszköz vezérlő információkat keverten is el lehet küldeni. Ehez azonban szükséges, hogy egyértelműen felismerhető legyen, meddig tartanak a nyomtatható karakaterek, és mikor kell a küldött karaktereket vezérlő karaktereknek értelmezni. Megállapodás alapján az ESC karaktert követő karatert vagy karaktereket nem tekinti a berendezés nyomtatható karakternek, még akkor sem, ha kódja alapján az lenne. Ezért neveznek bizonyos karakter kombinációkat "vezérlő szekvencia" vagy "escape szekvencia" névvel, illetve így lehet klaviatúrán vezérlő karaktereket "előállítani" (lásd később). A mechanizmust az ASCII kód "apja", Bob Bemer vezette be.

Általában a 27 kódot küldik először, majd az ezt követő egy vagy több nyomtatható karaktert értelmezik úgy, hogy azok speciális akciókat indítanak el – ha a vezérlő vagy a vezérlő meghajtója erre fel van készítve. A karakter szekvencia után a követekező karaktereket már ismét normál nyomtatható karakterként értelmezi a berendezés. Például, a 27 kód után küldött nyomtatható karakterek "[2;10H" a Digital VT-102 terminálján a kurzort a képernyő 2 sorának 10. cellájára pozicionálták. Számos szabványt dolgoztak ki ilyen szekvenciákra, például az ANSI X3.64 (1979-ben), amelyik a VT-100 sorozatú terminálok viselkedését "emulálta". Sajnos nagy számú, nem szabványos variációt is alkalmaztak, különösen a printerek körében, mivel a technológia gyorsabban fejlődött, mint a szabványok, viszont ez a kompatibilitás szempontjából egyáltalán nem volt elfogadható: egy nyomtató helyett nem lehetett automatikusan egy másikat alkalmazni.

[szerkesztés] Vezérlő karakterek és a billentyűzet

Nagyon fontos megérteni, hogy a billentyűzet – önmagában – semmiféle karakterkódot nem nem küld a PC felé, hanem úgynevezett "scancode" érkezik a billentyűzet vezérlőjéhez (driver-éhez), ami ezekből a "scancode"-ból készít – többnyire – ASCII kódokat.

Az általában használatos billentyűzeteken van egy speciális billentyű, amit "kontroll" vagy "Ctrl" (néhány esetben "Cntl") felirattal láttak el. Ez a billentyű a "shift" billentyűhöz hasonlóan használható, azaz egy másik billentyűvel együtt lenyomva másik betűt vagy más jelet generál. Ezen a módon generálható az a 32 kód, amely megfelel az ASCII vezérlő karaktereinek. Mivel az ASCII kód kisbetűi (ideértve a @ jelet is) decimálisan 64-nél kezdődnek, a "Ctrl" billentyű lenyomásával együtt lenyomott kisbetű hatására keletkező ASCII kód értéke nem más, mint az adott kisbetű decimális kódjából levonva 64. Így pontosan a megfelelő ASCII vezérlő karaktereket kapjuk.

Ha a generált kódokat bináris formában ábrázoljuk, látható, hogy a második legbaloldalibb bit ( 6. bit, 26, ami pontosan 64) nullába állításával – amit a "Ctrl" használata eredményez – a vezérlő karakterek egyszerűen előállíthatók. Például, a "ctrl" és a G billenytyűt (kódja 71 decimálisan, ami megfelel a 01000111-nek binárisan) együttesen lenyomjuk, akkor a generált kód a Bell (kódja 7 decimálisan, vagy 00000111 binárisan).

A fenti megoldás miatt gyakran jelenítik meg a vezérlő karaktereket úgy, hogy az a "ctrl" és nyomtatható karakter kombinációja. A "ctrl" jelzésére a "^" jelet használják, a jelölési módot pedig Ctrl szekvenciának nevezik; például, a ^G a 7 (bell) kódot jelenti, és a "Ctrl" és a "G" billentyűk együttes leütésével keletkezik.

A billentyűzeteken van néhány billentyű, amely önmagában is képes vezérlő karakterek generálására. Például, a "Backspace" általában a 8-as kódot, a "Tab" a 9-es kódot, az "Enter" vagy "Return" a 13-as kódot generálják (egyes billentyűzetek a "Enter" hatására a 10-es kódot generálják).

Modern billentyűzeteken vannak olyan billentyűk, amelyekhez nem lehet ASCII kódot rendelni, ilyenek például a kurzor mozgató nyilak és a szöveg szerkesztő funkciók. Ezek a karakterek a következő háromféle mód valamelyikével állíthatók elő: nem használt vezérlő karaketereket rendelnek az egyes funkciókhoz (billentyűkhöz), vagy nem ASCII kódolást használnak, vagy több karakterből álló vezérlő szekvenciákat használnak. A PC-hez használható billentyűzetek többnyire az első két módszer valamelyikét használják, viszont a "buta" terminálok inkább a kontroll szekvenciákt használják.

[szerkesztés] Használatuk

A vezérlő karaktereket alapvetően a következő csoportokba sorolhatók:

  • nyomtatás és megjelenítés vezérlés
  • adatok struktúrálása és adatátvitel vezérlés
  • vegyes

[szerkesztés] Nyomtatás és megjelenítés vezérlés

A nyomtatásvezérlő karakterek először a nyomtatók, a legelső megjelenítő eszközök, fizikai működésének vezérlésére szolgáltak.

A "kocsi vissza" karakter, ha elküldték valamilyen berendezésnek, azt eredményezte, hogy a nyomtató mechanika – ha volt – az adott sor első nyomtatási pozíciójába állt. (egyes berendezések esetében nem az aktuális sor elejére, hanem a következő sor elejére pozicionált a nyomtató).

A "soremelés" hatására a nyomtatási pozíció egy sorral lejebbre került. A berendezés kialakításától függően a nyomtatási pozíció a követekező sor eleéjére is kerülhetett – európai nyelvek esetében a lap bal oldalára, arab és héber nyelvek esetében a lap jobb oldalára).

"Vízszintes vagy függőleges tabulálás" esetén – ha a berendezés képes volt értelmezni a vezérlő karaktert – az adott tabulátor pozícionak megfelelő helyre pozicionálódott a nyomtatást végző eszköz.

A "form feed" karakter hatására egy új lap kezdetére állt a nyomtató berendezés.

A "visszalépés" vezérlő karakter az aktuális pozíciótól egy lépéssl vissza léptette a nyomtatót, így lehetőség nyílt arra, hogy felülnyomtatással elő lehessen olyan karaktert is állítani, ami normál esetben nem nyomtatható. Terminálok és képernyős eszközök esetében választani lehetett, hogy a vezérlő szoftver (vagy hardver) konvertálja-e a vett visszaléptetést egy un. destruktív törlési szekvenciává (ami BS SP BS) vagy csak lépjen vissza egy nyomtatási (kijelzési) pozícióval.

A "shift in" és "shift out" küldésével az esetlegesen beépített másik kódkészletre való át- és visszatérést lehetett szabályozni, így -megvalósítástól függően – lehetett pl. cirill vagy görög, esetleg speciális karakterek – nyomtatni. Az "eszkép szekvenciák" hasonló célokat szolgáltak.

A terminálok fejlődésének következtében, a fizikai nyomtatások vezérlése helyett a sokkal flexibilisebb képernyős megjelenítés vette át a főszerepet, így a szavak, sorok vagy teljes képernyő törlésére kezdték alkalmazni a különböző vezérlő karaktereket. A "form feed", például a törölte a képernyőt, miven megszűnt az új lap, amire nyomtatni lehet. Az eddig használtaknál bonyolultabb eszkép szekvenciákat kellett használni, hogy a különféle fejlesztési /fejlődési lehetőségeket minél jobban ki lehessen használni, mind a terminálok képernyőin, mind pedig a nyomtatókon. Az eddig jól alkalmazható koncepció, a vezérlő karakaterek használata, a funkciók számának növelésével egyre inkább szűkítette a lehetőségeket, a vezérlő karakterek korlátozott száma miatt. A vezérlő szekvenciák (eszkép szekvenciák a megvalósításkor) jobban megfeleltek a változó körülmények között, és nagyon nagyszámban és változaban alkalmazzák is őket, viszont éppen a nagy számú, többnyire eltérő szekvenciák kezelése a kompatibilitás miatt kritikus.

[szerkesztés] Adatok struktúrálása

A különféle elválasztók ( fájl, csoport, rekord, és egységUnit ) az adataok sztruktúrálására készültek, főként szalagon tárolt adatok esetén, hogy szimulálni lehessen a lyukkártyákat. A "hordozó vége" figyelmeztett a szalag (vagy bármi más) végére. Mivel a legtöbb mai rendszer a CR/LF és TAB karaktereket használja az adatok struktúrálására (ezeket a karaktereket gyakran elválasztás vezérlő karaktereknek is nevezik), ezért inkább ezeket az elválasztás vezérlő kraktereket kell manapság használni, szemben a definiált vezérlő karakterekkel. Ezek a karakterek nem használhatók más célokra, nem átdefiniálhatók, csak és kizárólag adatok struktúrált elválasztása és csoportosítása a feladatuk.

[szerkesztés] Adatátvitel vezérlés

Az adatátvitel vezérlésére használt/tervezett karakterek biztosítják, hogy a két végpont közötti adatátvitel vezérelhető, ellenőrizhető és megbízható (hibamentes) legyen – a lehetőségeken belül. A hibátlanság biztosítása – végső esetben úgy történik, hogy ha a hiba nem javítható, akkor legalább az a tényt jelzi, hogy nem biztosítható a hibamentes átvitel.

Az SOH – start of header, fejléc kezdete – jelzi, hogy nem adat-blokk következik – a blokk tartalma az adatátvitel vezérlése, ellenőrzés szempontjából fonos adatokat tartalmaz csak – indkátor funkciót lát el. A tényleges adatot – szöveget – az STX – start of text, szöveg kezdete – jelzi, vételét követően érkezik a valódi üzenet. Ha ez az üzenet szöveg, akkor semmi egyéb teendő nincsen vele, ha viszont bitsorozat, akkor a DLE vezérlő karakterek beszúrásával kell egy vezérlő karakter kódjával megegyező kódot "hatástalanítani". Értelemszerűen a DLE kód is átvihető, ebben az esetben a DLE DLE megoldást kell használni. A szöveges vagy bitfolyan bolkk végét az ETX – end of text, szöveg vége karater jelzi. Általában ezt a vezérlő karaktert két ellenőrző karakter követi, az úgynevezett checksum vagy ellenőrző összeg, illetve a CRC amelyeket az adó oldalon a átvitt bolkk alapján számolnak ki, és vételi oldalon ellenőrzik, a hibák kiszűrésére.

Az ESC – escape, eszkép – karakter, annak ellenére, hogy vezérlő karakter, az adatártvitel vezérlésében általában nem vesz részt, azaz közönséges karakternek számít, mégis külön kell vele foglalkozni: általános szabály szerint DLE ESC formában átvihető az üzenetben, bizonyos eljárásokban azonban ESC ESC formában kell átvinni. A szükséges DLE ill. ESC beszúrásokat vagy az adatátviteli vezérlő, vagy – kevésbé intelligens berendezés esetében – a programozónak kell biztosítnia a küldő oldalon, illetve a vételi oldalon az eltávolításukról gondoskodni kell.

A NAK karakter, a negatív nyugtázás egy olyan jelző, ami jelzi a küldő oldal számára, hogy az átvitel folyamán valamilyen rendellenesség történt. Általában, megállapodás szerint a NAK vétele kiváltja az előző üzenet (adat-blokk) újraküldését. Annak elkerülésére, hogy egy hiba állandó előfordulása miatt az újraküldések vételen ciklusba kerüljenek, az egymás követő negatív nyugtázások számát korlátozzák, és megszakítják az átvitelt, a megfelelő hibajelzés kiséretével. A pozitív nyugtázás, az ACK hatására a következő adatblokk át lesz küldve, illetve egy EOT-vel jelezni tudja a küldő, hogy nincs több küldendő adata.

Ha az átviteli közeg fél-duplex, azaz egy időben csak egy átviteli irányban lehetséges átvitel a végpontok között, a vezérlő állomás (általában az, aki a kapcsolatfelvételt kezdeményezte, ha egyéb konvencióból ez nem derül ki) lehetőséget biztosít arra, hogy az ellenállomás, vagy ellenállomások több pontos kapcsolat esetében, szintén küldhessenek adatokat. Erre szolgál az ENQ – enquiry, lekérdező – vezérlő karakter, amit a vezérlő állomás küldhet csak. A ENQ vételére az állomás vagy elküldi a jelzését, hogy van küldeni való adat-blokkja vagy adat-blokkjai, vagy jelzi, hogy nincsen küldeni valója. Maga az adatküldés a fentiekben leírtak alapján történik a másik irányban is. A lényeges különbség az, hogy a vezérlő (master) állomás megszakíthatja az adatküldést, és fordíthat az átviteli irányon, és küldhet újabb adatokat, addig ilyet, illetve ENQ küldést a alárendelt állomások nem tehetnek.

A külöböző vezérlőkarakterek küldésén kívül még több időzítés kezelése is biztosítja, hogy az átvitel ellenőrizhető és kezelhető legyen, ne akadhasson fel.

Az eszköz vezérlő karaktereket eredtileg általános célokra tervezték, és minde berendezésben meg is valósították a kezelésüket. Gondot jelentett azonban, hogy az általános megoldásban nem volt lehetőség arra, hogy a átvitelt egy berendezés leállíthassa, mert például pillanatnyilag nem képes több adatot fogadni. A Digital Equipment Corporation kidolgozott egy megoldást, amelyben a 19 kódot (az eszköz vezérlő 3 nevű karaktert, ami a CTRL S kombinációval lehet billentyűzetről generálni, vagy ismertebb nevén "X-OFF") az átvitel leállítására, míg a 17 kódot, (az eszköz vezérlő 2 nevű karaktert, ami a CTRL Q kombinációval lehet billentyűzetről generálni, vagy ismertebb nevén "X-ON") az átvitel indítására lehet használni. A két karakter ilye használata eltért az általánosan használt modellektől, viszont széles körben használhatónak bizonyult, főleg perifériék vezérlésére, ugyanis megtakarított egy kábeleret, és ezzel költséget lehetett csökkenteni.

[szerkesztés] Vegyes

A legtöbb ASCII vezérlő karakterre azért volt szükség, hogy bizonyos berendezések vagy eljárások vezérlésére lehetőség legyen, de ezek a berendezések és eljárások napjainkban egyre kevesebben vannak, vagy már el is tűntek a napi gyakorlatból. Például, a 22 kód, amit a szinkron modmek küldtek eredtileg, ma gyakorlatilag nem szükségesek (egyre kevesebb a szinkron modem, más adatátviteli eljárások vannak használatban). A modern adatátviteli eljárások már bitorientáltak, szemben a régebbi karakter-orientált eljárásokkal, ahol vezérlő karaktereket használtak, míg ma vezérlő bitek, bitszekvenciák végzik a vezérlést.

A 0 kód, a null karakter, egy speciális eset. A lyukszalagon azt jelentette, hogy nincsen lyukasztás, csak a továbbító lyuk. Ezért is nevezik kitöltő karakternek, egyéb jelentése, használata szinte nincs is. Bizonyos fordítóprogramok használják stringek végének jelzésére.

A 127 kód, szintén különleges eset. A minden bit 1-ben kód (binárisan) szolgált a lyukszalagon egy karakter törlésére – gyakran ezt kézi lyukasztóval végezték. A lyukszalag volt az egyik legtöbbet használt adathordozó, amikor az ASCII kódot kidolgozták, de ha visszagondolunk a Második Világháborúban használt kódfejtő berendezésekre, ahol szintén lyukszalg volt az adathordozó, akkor szinte már történelmi távlatokra tekinthet vissza a lyukszalag. Ma viszont csak múzeumokban lelhető fel ... Egyes rendszerek (pl. az eredeti Apple) a 127-es kódot visszalépésre konvertálták. Mivel ezt a karaktert ma szinte semmire sem használják, viszont a nyomtatható karakterek közül egy értékes helyet elvesz, mert semmilyen glifa nincsen hozzárendelve, néhány számítógép gyártó elkezdte nyomtatható karakternek használni (többnyire a teljesen fekete "doboz" karatktert rendelték hozzá), amit vagy törülni kívánt karakter átütésére (és így teljes törlésére), vagy grafikai megjelenítésre használtak. A 32 vezérlő karakter közül ma nagyjából 4-6 az, amit ténylegesen, eredeti funkciójának megfelelően használnak a korszerű alkalmazások: "kocsi-vissza", "soremelés","tab","ESC", "visszalépés". A legtöbb fájlrendszer nem engedi meg vezérlő karakterek használatát a fájlnevekben, mivel ezeknek egyéb fentartott funkcióik lehetnek.

[szerkesztés] Külső hivatkozások


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -