Kontrolní postava - Control character

V oblasti výpočetní techniky a telekomunikací je řídicí znak nebo netisknoucí znak ( NPC ) kódový bod ( číslo ) v znakové sadě , který nepředstavuje psaný symbol. Používají se jako signalizace v pásmu, aby způsobily jiné efekty než přidání symbolu do textu. Všechny ostatní znaky jsou převážně tiskové , tisknutelné nebo grafické znaky , snad kromě znakumezera “ (viz tisknutelné znaky ASCII ).

Všechny položky v tabulce ASCII pod kódem 32 (technicky sada řídicích kódů C0 ) jsou tohoto druhu, včetně CR a LF používaných k oddělení řádků textu. Kód 127 ( DEL ) je také kontrolní znak. Rozšířené sady ASCII definované normou ISO 8859 přidaly kódy 128 až 159 jako řídicí znaky, toto bylo primárně provedeno tak, že pokud byl odstraněn vysoký bit, nezmění to tiskový znak na řídicí kód C0, ale zde byla nějaká přiřazení, zejména NEL . Tato druhá sada se nazývá sada C1 .

Těchto 65 kontrolních kódů bylo přeneseno do Unicode . Unicode přidal více znaků, které by mohly být považovány za ovládací prvky, ale rozlišuje mezi těmito „formátovacími znaky“ (jako je například spojovací prvek s nulovou šířkou ) a 65 řídícími znaky.

Extended BCD Interchange kód (EBCDIC) znaková sada obsahuje 65 řídicí kódy, včetně všech kontrolních ASCII kódy a dodatkového kódů, které se nejčastěji používají pro ovládání periferií IBM.

0x00 0x10
0x00 NUL DLE
0x01 SOH DC1
0x02 STX DC2
0x03 ETX DC3
0x04 EOT DC4
0x05 ENQ NAK
0x06 ACK SYN
0x07 BEL ETB
0x08 BS UMĚT
0x09 HT EM
0x0A LF SUB
0x0B VT ESC
0x0C FF FS
0x0D ČR GS
0x0E TAK RS
0x0F SI NÁS
0x7F DEL

Dějiny

Procedurální znaky v morseově abecedě jsou formou kontrolního znaku.

V kódu Baudot 1870 byla zavedena forma kontrolních znaků : NUL a DEL. Kód 1901 Murray přidal návrat vozíku (CR) a posun řádku (LF) a další verze kódu Baudot obsahovaly další řídicí znaky.

Znak zvonu (BEL), který zazvonil, aby upozornil operátory, byl také jedním z prvních znaků ovládání dálnopisu .

Řídícím znakům se také říká „formátové efektory“.

V ASCII

Mezi řídicí znaky v ASCII, které se stále běžně používají, patří:

Řídicí znaky lze popsat tak, že dělají něco, když je uživatel zadá, například kód 3 ( znak konce textu , ETX, ^C) k přerušení běžícího procesu nebo kód 4 ( znak konce přenosu , EOT, ^D), slouží k ukončení zadávání textu nebo k ukončení unixového shellu . Tato použití mají obvykle málo společného s jejich používáním, když jsou ve výstupním textu, a v moderních systémech obvykle nezahrnují přenos čísla kódu (místo toho program získá skutečnost, že uživatel drží stisknutou klávesu Ctrl a stisknutí klíče označeného 'C').

Bylo definováno poměrně málo řídicích znaků (33 v ASCII a standard ECMA-48 přidává dalších 32). Důvodem bylo, že rané terminály měly velmi primitivní mechanické nebo elektrické ovládací prvky, díky nimž bylo implementování jakéhokoli druhu API pro zapamatování stavu poměrně nákladné, takže jiný kód pro každou funkci vypadal jako požadavek. Rychle se stalo možným a levným interpretovat sekvence kódů k provedení funkce a výrobci zařízení našli způsob, jak poslat stovky pokynů k zařízení. Konkrétně použili kód ASCII 27 (escape), za ním následovala řada znaků nazývaná „kontrolní sekvence“ nebo „úniková sekvence“. Mechanismus vynalezl Bob Bemer , otec ASCII. Například sekvence kódu 27 následovaná tisknutelnými znaky „[2; 10H“ by způsobila, že terminál DEC VT-102 přesune kurzor do 10. buňky druhého řádku obrazovky. Pro tyto sekvence existuje několik standardů, zejména ANSI X3.64 . Ale počet nestandardních odchylek v používání je velký, zejména u tiskáren, kde technologie pokročila mnohem rychleji, než jakýkoli jiný orgán pro standardy dokáže držet krok.

V Unicode

V Unicode jsou „řídicí znaky“ U+0000 — U+001F (ovládací prvky C0), U+007F (odstranění) a U+0080 — U+009F (ovládací prvky C1). Jejich obecná kategorie je „Cc“. Formátovací kódy jsou odlišné, v obecné kategorii „Srov.“. Řídicí znaky Cc nemají v Unicode žádný název, ale místo toho jim jsou přiděleny štítky jako „<control-001A>“.

Zobrazit

Existuje řada technik pro zobrazení netisknutých znaků, které lze ilustrovat znakem zvonku v kódování ASCII :

  • Kódový bod : desetinný 7, hexadecimální 0x07
  • Zkratka, často tři velká písmena: BEL
  • Speciální znak zhušťující zkratku: Unicode U+2407 (␇), „symbol pro zvon“
  • ISO 2047 grafické znázornění: Unicode U + 237E (⍾), "grafický pro zvon"
  • Stříška zápis v ASCII, kde je bod kódu 00xxxxx reprezentován jako stříška následuje písmeno na místo v kódu 10xxxxx: ^ G
  • Řídicí sekvence , stejně jako v C / C ++ řetězec znaků kódů: \ a , \ 007 , \ X07 , atd.

Jak se řídicí znaky mapují na klávesnice

Klávesnice založené na ASCII mají klávesu označenou „ Control “, „Ctrl“ nebo (zřídka) „Cntl“, která se používá podobně jako klávesa Shift a je stisknuta v kombinaci s jinou klávesou písmen nebo symbolů. V jedné implementaci řídicí klíč generuje kód 64 míst pod kódem pro (obecně) velká písmena, která je stisknuta v kombinaci s (tj. Odečte 64 od hodnoty kódu ASCII v desítkové soustavě (obecně) velkých písmen). Druhou implementací je převzít kód ASCII vytvořený klíčem a bitově AND jej s 31, vynucení bitů 6 a 7 na nulu. Například stisknutím „ovládání“ a písmena „g“ nebo „G“ (kód 107 v osmičkovém nebo 71 v základně 10 , což je 01000111 v binárním ), se vytvoří kód 7 (Bell, 7 v základu 10 nebo 00000111 v binární). Znak NULL (kód 0) ​​je reprezentován Ctrl-@, „@“ je kód bezprostředně před „A“ ve znakové sadě ASCII. Pro pohodlí mnoho terminálů přijímá Ctrl-Space jako alias pro Ctrl-@. V obou případech to vytvoří jeden z 32 ASCII řídicích kódů mezi 0 a 31. Tento přístup není schopen reprezentovat znak DEL kvůli jeho hodnotě (kód 127), ale Ctrl-? se pro tento znak často používá jako odečtení 64 od '?' dává -1, což když je maskováno na 7 bitů, je 127.

Když podržíte ovládací klávesu, klávesy s písmeny produkují stejné ovládací znaky bez ohledu na stav kláves Shift nebo Caps Lock . Jinými slovy, nezáleží na tom, zda by klíč vytvořil velká nebo malá písmena. Interpretace ovládacího klíče s mezerou, grafickým znakem a číslicovými klávesami (kódy ASCII 32 až 63) se mezi systémy liší. Některé produkují stejný znakový kód, jako kdyby nebylo stisknuto ovládací tlačítko. Jiné systémy převádějí tyto klávesy na řídicí znaky, když je ovládací klávesa podržena. Interpretace ovládacího klíče s klíči, které nejsou ASCII („cizí“), se také mezi systémy liší.

Řídicí znaky jsou často vykreslovány do tisknutelné podoby známé jako notace stříšky vytištěním stříšky (^) a poté znaku ASCII, který má hodnotu řídicího znaku plus 64. Řídicí znaky generované pomocí kláves s písmeny se tedy zobrazují s velkými písmeny forma dopisu. Například ^G představuje kód 7, který je generován stisknutím klávesy G při podržení ovládacího tlačítka.

Klávesnice také obvykle mají několik jednotlivých kláves, které produkují kódy řídicích znaků. Například klíč označený „Backspace“ obvykle produkuje kód 8, kód „Tab“ 9, „Enter“ nebo „Return“ kód 13 (ačkoli některé klávesnice mohou vytvářet kód 10 pro „Enter“).

Mnoho klávesnic obsahuje klávesy, které neodpovídají žádnému tisknutelnému nebo kontrolnímu znaku ASCII, například šipky pro ovládání kurzoru a funkce zpracování textu . Přidružená stisknutí kláves jsou počítačovým programům sdělena jednou ze čtyř metod: přivlastnění jinak nepoužívaných řídicích znaků; použití jiného kódování než ASCII; pomocí víceznakových řídicích sekvencí; nebo pomocí dalšího mechanismu mimo generování znaků. „Hloupé“ počítačové terminály obvykle používají řídicí sekvence. Klávesnice připojené k samostatným osobním počítačům vyrobeným v 80. letech obvykle používají jednu (nebo obě) z prvních dvou metod. Moderní počítačové klávesnice generují skenovací kódy, které identifikují konkrétní fyzické klávesy, které jsou stisknuty; počítačový software pak určí, jak zacházet se stisknutými klávesami, včetně kterékoli ze čtyř výše popsaných metod.

Účel designu

Řídicí znaky byly navrženy tak, aby spadaly do několika skupin: ovládání tisku a zobrazení, strukturování dat, řízení přenosu a různé.

Ovládání tisku a zobrazení

Ovládací znaky tisku byly poprvé použity k ovládání fyzického mechanismu tiskáren, nejčasnějšího výstupního zařízení. Časnou implementací této myšlenky byly mimopásmové znaky řízení vozíku ASA . Později byly do proudu dat k tisku integrovány řídicí znaky. Znak návratu CR (CR) při odeslání do takového zařízení způsobí, že umístí znak na okraj papíru, na kterém začíná psaní (může, ale také nemusí také přesunout tiskovou pozici na další řádek). Znak podávání řádku (LF/NL) způsobí, že zařízení umístí pozici tisku na další řádek. Může (nebo nemusí), v závislosti na zařízení a jeho konfiguraci, také přesunout tiskovou pozici na začátek dalšího řádku (což by byla pozice úplně vlevo pro skripty zleva doprava , jako jsou abecedy používané pro západní jazyky a pozice úplně vpravo pro skripty zprava doleva , jako je hebrejská a arabská abeceda). Znaky svislé a vodorovné záložky (VT a HT/TAB) způsobí, že výstupní zařízení přesune tiskovou pozici na další zarážku tabulátoru ve směru čtení. Znak podávání formuláře (FF/NP) spustí nový list papíru a může, ale nemusí se přesunout na začátek prvního řádku. Znak backspace (BS) posune tiskovou pozici o jeden znak zpět. Na tiskárnách se toto používá nejčastěji, takže tiskárna může přetisknout znaky a vytvořit tak jiné, běžně nedostupné znaky. Na terminálech a jiných elektronických výstupních zařízeních často existují softwarové (nebo hardwarové) konfigurační volby, které umožní destrukční backspace (tj. BS, SP, BS sekvence), která vymaže, nebo nedestruktivní, která ne. Posunem a posunutím znaků (SI a SO) byly vybrány alternativní znakové sady, písma, podtržení nebo jiné režimy tisku. K tomu samému se často používaly únikové sekvence.

S příchodem počítačových terminálů, které fyzicky netiskly na papír, a tak nabízely větší flexibilitu, pokud jde o umístění obrazovky, mazání atd., Byly upraveny řídicí kódy tisku. Formulářové kanály například obvykle vymazaly obrazovku, protože nebylo možné přesunout novou stránku papíru. Byly vyvinuty složitější únikové sekvence, aby se využila flexibilita nových terminálů a skutečně novějších tiskáren. Koncept řídicí postavy byl vždy do určité míry omezující a při použití s ​​novým, mnohem flexibilnějším hardwarem byl extrémně důležitý. Řídicí sekvence (někdy implementované jako únikové sekvence) by mohly odpovídat nové flexibilitě a síle a staly se standardní metodou. Na výběr však bylo a zůstává velké množství standardních sekvencí.

Strukturování dat

Oddělovače (Soubor, Skupina, Záznam a Jednotka: FS, GS, RS a USA) byly vytvořeny za účelem strukturování dat, obvykle na pásce, za účelem simulace děrných karet . Konec média (EM) varuje, že páska (nebo jiné záznamové médium) končí. Zatímco mnoho systémů používá pro strukturování dat CR/LF a TAB, je možné se setkat s řídícími znaky oddělovače v datech, která je třeba strukturovat. Řídicí znaky oddělovače nejsou přetíženy; neexistuje jejich obecné použití kromě rozdělení dat do strukturovaných seskupení. Jejich číselné hodnoty sousedí s mezerou, která může být považována za člena skupiny, jako oddělovače slov.

Ovládání převodovky

Řídicí znaky přenosu měly strukturovat datový tok a podle potřeby řídit opakovaný přenos nebo ladné selhání tváří v tvář chybám přenosu.

Znak začátku záhlaví (SOH) měl označit nedatovou část datového toku-část proudu obsahující adresy a další data o hospodaření. Začátek znaku textu (STX) označil konec záhlaví a začátek textové části streamu. Konec znaku textu (ETX) označil konec dat zprávy. Široce používanou konvencí je vytvořit ze dvou znaků předcházejících ETX kontrolní součet nebo CRC pro účely detekce chyb. Konec znaku přenosového bloku (ETB) byl použit k označení konce bloku dat, kde byla data pro účely přenosu rozdělena do takových bloků.

Únikový znak ( ESC ) byl určen k „citování“ dalšího znaku, pokud by to byl jiný řídicí znak, vytiskl by ho místo provádění řídicí funkce. K tomuto účelu se dnes téměř nepoužívá. V závislosti na kontextu se jako viditelné „ únikové znaky “ používají různé tisknutelné znaky .

Náhradní znak ( SUB ) byl určen k vyžádání překladu dalšího znaku z tisknutelného znaku na jinou hodnotu, obvykle nastavením bitu 5 na nulu. To je užitečné, protože některá média (například listy papíru vyráběné psacími stroji) mohou přenášet pouze tisknutelné znaky. V systémech MS-DOS se soubory otevřenými v textovém režimu je však „konec textu“ nebo „konec souboru“ označen tímto znakem Ctrl-Z namísto Ctrl-C nebo Ctrl-D , které jsou běžné na jiných operační systémy.

Zrušovací znak ( CAN ) signalizoval, že předchozí prvek by měl být zahozen. Záporný potvrzovací znak ( NAK ) je jednoznačným příznakem, obvykle s upozorněním, že příjem byl problém, a často by měl být aktuální prvek odeslán znovu. Potvrzovací znak ( ACK ) se obvykle používá jako příznak k označení, že u aktuálního prvku nebyl zjištěn žádný problém.

Když je přenosové médium napůl duplexní (to znamená, že může vysílat pouze v jednom směru najednou), obvykle existuje hlavní stanice, která může vysílat kdykoli, a jedna nebo více podřízených stanic, které vysílají, když mají povolení. Znak dotazu ( ENQ ) obvykle používá hlavní stanice k tomu, aby požádala podřízenou stanici o odeslání další zprávy. Podřízená stanice indikuje, že dokončila svůj přenos, odesláním znaku konce přenosu ( EOT ).

Řídicí kódy zařízení (DC1 až DC4) byly původně obecné, které mělo být podle potřeby implementováno každým zařízením. Univerzální potřebou v přenosu dat je však požádat odesílatele, aby přestal vysílat, když přijímač dočasně nemůže přijmout žádná další data. Digital Equipment Corporation vynalezla konvenci, která používala 19 (ovládání zařízení 3 znaky ( DC3 ), také známý jako control-S, nebo XOFF ) pro "S" top přenos, a 17 (zařízení ovládání 1 znak ( DC1 ), aka ovládání -Q nebo XON ) pro zahájení přenosu. Stala se tak široce používanou, že si většina neuvědomuje, že není součástí oficiálního ASCII. Tato technika, jakkoli je implementována, se vyhýbá dalším kabelům v datovém kabelu věnovaným pouze správě přenosu, což šetří peníze. Musí se však použít rozumný protokol pro použití takových signálů řízení toku přenosu, aby se však zabránilo potenciálním podmínkám zablokování.

Únikový znak datového odkazu ( DLE ) měl být signálem na druhý konec datového spojení, že následující znak je řídicí znak, jako je STX nebo ETX. Paket může být například strukturován následujícím způsobem ( DLE ) <STX> <PAYLOAD> ( DLE ) <ETX>.

Různé kódy

Kód 7 ( BEL ) je určen k vyvolání zvukového signálu v přijímacím terminálu.

Mnoho z řídících znaků ASCII bylo navrženo pro zařízení té doby, která se dnes často nevidí. Například kód 22, „synchronní nečinnost“ ( SYN ), byl původně odeslán synchronními modemy (které musí neustále odesílat data), když nebyla k odeslání žádná skutečná data. (Moderní systémy obvykle používají počáteční bit k oznámení začátku přenášeného slova - to je vlastnost asynchronní komunikace. Synchronní komunikační spojení byla častěji pozorována u sálových počítačů, kde byly obvykle provozovány přes podnikové pronajaté linky pro připojení sálového počítače k ​​jinému sálový počítač nebo třeba minipočítač.)

Kód 0 (kódový název ASCII NUL ) je speciální případ. V papírové pásce je to v případě, že nejsou žádné otvory. Je vhodné to považovat za znak výplně, který nemá žádný jiný význam. Vzhledem k tomu, že poloha znaku NUL nemá žádné děrované otvory, lze jej později nahradit jakýmkoli jiným znakem, takže byl obvykle používán k rezervaci místa, buď pro opravu chyb, nebo pro vkládání informací, které by byly k dispozici později nebo na jiném místě. V oblasti výpočetní techniky se často používá k vyplňování záznamů s pevnou délkou a běžněji k označení konce řetězce.

Kód 127 ( DEL , alias „rubout“) je rovněž zvláštním případem. Jeho 7-bitový kód je all-kousky-on v binárním, což v podstatě vymazala znakovou buňku na děrné pásky , když overpunched. Papírová páska byla při vývoji ASCII běžným paměťovým médiem, přičemž historie počítačů sahá až do zařízení pro prolomení kódu z 2. světové války v Biuro Szyfrów . Papírová páska zastarala v 70. letech, takže tento chytrý aspekt ASCII poté zřídka viděl nějaké využití. Některé systémy (například původní Jablka) jej převedly na backspace. Ale protože jeho kód je v rozsahu obsazeném jinými tisknutelnými znaky a protože neměl žádný oficiální přidělený glyf, mnoho prodejců počítačového vybavení jej používalo jako dodatečný tisknutelný znak (často znak „černé“ krabice) užitečný pro mazání textu přetištěním s inkoustem).

Nevymazatelné programovatelné ROMy jsou obvykle implementovány jako pole tavitelných prvků, z nichž každá představuje bit , které lze přepínat pouze jedním způsobem, obvykle od jedné do nuly. V takových PROM mohou být znaky DEL a NUL použity stejným způsobem, jakým byly použity na děrné pásce: jeden pro rezervaci nesmyslných výplňových bytů, které lze zapsat později, a druhý pro převod zapsaných bytů na nesmyslné výplňové bajty. U PROM, které přepínají jeden na nulu, jsou role NUL a DEL obráceny; také bude DEL fungovat pouze se 7bitovými znaky, které se dnes používají jen zřídka; pro 8bitový obsah lze místo DEL použít znakový kód 255, běžně definovaný jako nepřerušovaný mezerný znak.

Mnoho souborových systémů nepovoluje řídicí znaky v názvech souborů , protože mohou mít vyhrazené funkce.

Viz také

Poznámky a reference

externí odkazy