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

E = 0
T = 1
G = 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.

E = 0 1 ₀..₀
T = 1 1 ₀..₀
G = 110 1 ₀..₀
@ = 011010 1 ₀..₀

Egy távíró karakter tárolása történjen 2 byte-on, 16 biten. Ekkor

E = 01₀₀ ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ = 0x4000
T = 11₀₀ ₀₀₀₀ ₀₀₀₀ ₀₀₀₀ = 0xc000
G = 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.

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 G. Ugyanakkor a vett G 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 B ( [B] = baud = Bd = s⁻¹ ), és elemi jel ideje T ( [T] = 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 ] 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 esetlegesen 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 ]

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 ]


⌂ Index
Verzió: 2024-04-21 ( 2020-11-12 .. 2024-04-21 07:25:50 UTC )
gg630504  Creative Commons License: by-nc-sa Nevezd meg!-Ne add el!-Így add tovább!  external HG9IEG Visszajelzés: