Távíró kódok adattárolása
A távíró karakter rövid jelből ( ti ), hosszú jelből ( tá ) és a közöttük lévő szünetből állhat. Szünet ( space ) a jelek ( mark ) között van, ezért külön nem kell tárolni. Marad a rövid és a hosszú jel, ami mindössze kétféle lehet, így tárolásukhoz elegendő egy bit.
Legyen
| rövid jel | = 0 |
| hosszú jel | = 1 |
Például
| = 0 | |
| = 1 | |
| = 110 | |
| = 011010 |
A karakter változó hosszú, a legrövidebb 1 rövid jel, de van, ami 6 ( rövid és hosszú ) jelből áll. Valahogyan jelölni kell a kód végét. Legyen ez az 1 bit, amit kizárólag ₀ bitek követhetnek.
| = 0 1 ₀..₀ | |
| = 1 1 ₀..₀ | |
| = 110 1 ₀..₀ | |
| = 011010 1 ₀..₀ |
Egy távíró karakter tárolása történjen 2 byte-on, 16 biten. Ekkor
| = 01₀₀ ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ | = 0x4000 | |
| = 11₀₀ ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ | = 0xc000 | |
| = 1101 ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ | = 0xd000 | |
| = 0110 101₀ ₀₀₀₀ ₀₀₀₀ | = 0x6a00 |
Speciális a szóköz karakter, ami legyen
szóköz = 1₀₀₀ ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ = 0x8000 = cwcSpace
Ez azért is szerencsés, mert a 0x0000 kódú adat jelölheti a string végét, C-ben szokásos módon. Egyébként is, legalább egy vége-bitnek lennie kell távírókódban.
C mintaprogramok
Az egyik mintaprogram ( cwtest0.c ) egy ( UTF-8 ) szöveget kódol át távírókódra és ír ki. A másik ( cwtest1.c ) pedig billentyűzni tud LD-C103 illesztő kábellel.
A programok alapja két táblázat. Az egyik táblázat távíró adáshoz unicode karakterekhez rendeli hozzá távírókódjaikat ( cwTxMp[] ). Másik pedig a vételhez, távírókódokhoz UTF-8 szöveget ( cwRxMp[] ). Mindkettőhöz van keresőfüggvény ( CwcFromCu(), SzFromCwc() ). Mindkét táblázat rendezett, a keresés logaritmusos/bináris.
Nem egyforma hosszú a két táblázat, mert a távíró nem különbözteti meg a kis-, nagy- és nemzeti betűket, adáskor a 'g', 'G', 'Г', 'г', 'Γ', 'γ' egyaránt . Ugyanakkor a vett csak a 'G'.
Néhány függvény az UTF-8 - unicode átkódolást végzi a kényelmesebb használatért ( ggch.? ).
Szabványosan:
| rövid jel ( mark ) hossza | 1 elemi jel |
| hosszú jel hossza | 3 elemi jel |
| karakteren belüli jeleket elválasztó szünet ( space ) hossza | 1 elemi jel |
| két karaktert elválasztó szünet hossza | 3 elemi jel |
| két szót elválasztó szóköz szünet hossza | 7 elemi jel |
Egy távírókarakter kiírásánál a kód bal szélső bitje ( maszk = 0x8000 = cwcBit ) szerint rövid ( 1 ) vagy hosszú ( 3 ) jelet ír ki. Ezt követi a karakteren belüli jelek közötti 1 hosszú szünet. A következő jel kiírásához a távírókódot egyel balra lépteti ( (cwc_) <<= 1 ). Amikor már csak a vége bit ( cwcEnd = 0x8000 ) marad, akkor vége.
Speciális eset a szóköz, amiből - ha több is lenne - csak egyet kell kiírni.
A modulációs sebesség fs ( [fs] = baud = Bd = s⁻¹ ), és elemi jel ideje Ts ( [Ts] = másodperc = s ) egymás reciprokai. Például 8 baud sebesség esetén az elemi idő 1/8 s = 125 ms.
Megjegyzem, a szóköz karakter ( ' ', 0x20 ), a bevezetett szóköz távíró kód ( cwcSpace, 0x8000 ) és a távíró adás szünet állapot ( space ) három különböző dolog.
Megjegyzem, a programokban használt azonosítókat a Magyar Jelölésmód
![[ html: Magyar Jelölésmód https://hu.wikipedia.org/wiki/Magyar_jel%C3%B6l%C3%A9s ]](../_/html.gif)
stílusában adtam.
Például cwcAct = CwcFromCu( cuAct );
| ggbit.h | unalmas bitek |
| ggch852_.c | karakter konvertálás |
| ggch852_.h | karakter konvertálás |
| ggch.c | karakter konvertálás |
| ggch.h | karakter konvertálás ( UTF-8 - unicode ) |
| ggchlwr_.c | karakter konvertálás |
| ggchlwr_.h | karakter konvertálás |
| ggcw.c | távírókód |
| ggcw_.c | távírókód táblázatok |
| ggcw.h | távíró |
| ggcw_.h | távírókód táblázatok |
| ggdt.c | dátum |
| ggdt.h | dátum |
| ggfs.h | állománykezelés |
| ggph.h | fizika |
| ggstd.c | általános ( típusok, hibakódok ) |
| ggstd.h | általános ( típusok, hibakódok ) |
| cwtest0.c | mintaprogram karakteres |
| cwtest1.c | mintaprogram LD-C103 billentyűzővel |
| makefile | fordítás, szerkesztés |
Az esetlegesen szükséges telepítéseket a mintaprogramok elejére írtam.
gg630504.hg9ieg/cwtest0/Nov 19 2020 21:41:27
>=-=-=-=---=---=-===-=-=---=-===-=-=---===-===-===-------=-===-===---===-===-===---=-===-=---=-===-=-=---===-=-=---===-===-=-===-===<
Hibakód: 0
JavaScript mintaprogram
| ggcw.js | távíró táblázatok, szöveg lejátszása és kirajzolása |
| cwtest2.html | szöveg lejátszása és kirajzolása |
Experiment is the sole judge of scientific “truth”.
A (természet)tudományos igazság kizárólagos kritériuma a kísérlet.
Feynman Richard
![[ html: Feynman http://hu.wikipedia.org/wiki/Richard_Feynman ]](../_/html.gif)

HG9IEG
Visszajelzés: