Távíró program
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 0 bitek követhetnek.
= 0 1 0..0
= 1 1 0..0
= 110 1 0..0
= 011010 1 0..0
Egy távíró karakter tárolása történjen 2 byte-on, 16 biten.
Ekkor
= 0100 0000 0000 0000 = 0x4000
= 1100 0000 0000 0000 = 0xc000
= 1101 0000 0000 0000 = 0xd000
= 0110 1010 0000 0000 = 0x6a00
Speciális a szóköz karakter, ami legyen
szóköz = 1000 0000 0000 0000 = 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.
Két mintaprogram
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- és nagybetűt, adáskor a 'g' és '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 [ baud, Bd, s-1 ] és elemi jel ideje [ másodperc, s ] egymás reciprokai.
Például 8 baud sebesség esetén az elemi idő 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 );
ggstd.h - általános ( típusok, hibakódok )
ggbit.h - unalmas bitek
ggch.h - karakter konvertálás ( UTF-8 - unicode )
ggfs.h - állománykezelés
ggcw.h - távíró
_ggcw.h - távírókód táblázatok
ggch.c - karakter konvertálás
ggcw.c - távírókód
_ggcw.c - mérsékelten érdekes távírókód táblázatok
cwtest0.c - mintaprogram karakteres
cwtest1.c - mintaprogram LD-C103 billentyűzővel
makefile - fordítás, szerkesztés
Az estlegesen szükséges telepítéseket a mintaprogramok elejére írtam.
gg630504.hg9ieg/cwtest0/Nov 19 2020 21:41:27
>=-=-=-=---=---=-===-=-=---=-===-=-=---===-===-===-------=-===-===---===-===-===---=-===-=---=-===-=-=---===-=-=---===-===-=-===-===<
Hibakód: 0
cwtest1 videó:
![[ youtube: 2021-01-08 LD-C103 USB CW telegraph Morse keyer RTS https://www.youtube.com/watch?v=qM4e3whr4t4 ]](../_/youtube.gif)
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)
⌂ Index
Verzió: 2023-05-14
( 2020-11-12 .. 2021-01-08 16:35:06 UTC )
gg630504 
HG9IEG
Visszajelzés: