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 0 bitek követhetnek.
          E = 0 1 0..0
          T = 1 1 0..0
          G = 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
          E = 0100 0000 0000 0000 = 0x4000
          T = 1100 0000 0000 0000 = 0xc000
          G = 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 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 [ 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 ] 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 ]

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ó: 2023-05-14 ( 2020-11-12 .. 2021-01-08 16:35:06 UTC )
gg630504  Creative Commons License: by-nc-sa Nevezd meg!-Ne add el!-Így add tovább!  external HG9IEG Visszajelzés: