LogoHam

Program Digital Contact List Editor

Jedná se o program pro přímou editaci digitálních kontaktů radiostanice Anytone ID878UV2 a ID168UV. Stáhnout si ho můžete v sekci Soubory ke stažení. Impulzem k napsání tohoto programu byla moje zvědavost, jestli radiostanice umí na svém displeji zobrazit české znaky. Odpověď je jednoduchá - neumí. Alespoň v současné době (19.1.2025) s firmware 3.0.5 (ID878UV2). Program mi dal ale dost práce a umí některé věci, které originální program CPS neumí. A tak ho dávám k dispozici všem, kdo vlastní tyto radiostanice a chtěli by si ho vyzkoušet. Pokud v něm uvidíte nějaký potenciál pro další vývoj, kontaktujte mě a já se pokusím napsat lepší verzi.

Program je určený pro windows, ale neinstaluje se. Po stažení jej stačí rozbalit do nějakého adresáře a tam už půjde spustit, třeba i z flešky. Hlavní výhodou oproti originálu CPS je to, že důsledně pracuje s texty v kódování UTF8. Umí tedy nejen české znaky, ale třeba i německé a mnoho dalších. Teprve v okamžiku zápisu do souboru nebo do radiostanice se můžete rozhodnout, jestli diakritiku použijete nebo ne. Při zkoumání struktury textů jsem zjistil, že jejich délka nemusí být omezená na 16 písmen, jak je tomu u programu CPS. Lze tedy pracovat s libovolně dlouhými položkami. Pro jistotu jsem tuto možnost zatím omezil na 40 písmen, což považuji za rozumný kompromis. Do radiostanice lze takto dlouhé texty experimentálně nahrát, ale moc to nedoporučuji. Displej je zatím neumí zpracovat.

Co všechno tedy program umí:

  • číst / ukládat soubory *.csv
  • přímo komunikuje s radiostanicí ID878UV2 / ID168UV, takže pro stažení / nahrání seznamu nepotřebujete originální program CPS
  • má zabudovaný webový prohlížeč, takže si umí z některých webů sám načíst zobrazenou tabulku POZOR: Tato funkce funguje pouze ve Windows 10 a novějších!
  • umí stáhnout soubor user.csv ze stránek BrandMeister (to je ten neustále aktualizovaný)
  • data načítá do své interní databáze v paměti RAM, takže umí základní databázové triky, například omezení počtu položek pomocí filtru, hromadnou editaci dat, hromadné mazání a podobně, aniž by bylo potřeba do počítače instalovat podporu klasických databází
  • při převodu na text bez diakritiky najde nejbližší "správný" znak, takže "č" samozřejmě nahradí písmenem "c", ale třeba německé "ß" vymění za "ss", takže text zůstává čitelný

Některá omezení:

  • Rozlišení obrazovky potřebuje alespoň 1440 x 900, i tak jsou delší texty vidět jen částečně
  • Při větším množství dat, třeba při práci s 300000 položkami ze seznamu BrandMeister, je na slabších počítačích potřeba trocha trpělivosti

Po spuštění programu se zobrazí prázdná databáze. Práci zahájíte stisknutím pravého tlačítka myši nad touto plochou. Objeví se nabídka se všemi aktuálně dostupnými funkcemi. Najdete zde tři základní skupiny příkazů. Zpracování vstupů, editaci položek v databázi a zpracování výstupů.

 01mainthumb

Obr.1 - Vzhled programu

1) Zpracování vstupů

1.1) Otevřít soubor *.csv; Po kliknutí na nabídku se zobrazí dialog pro výběr souboru. Soubor zatím není kontrolován na správnost záhlaví, které by mělo být: "No.","Radio ID","Callsign","Name","City","State","Country","Remarks","Call Type","Call Alert". Položky souboru se nahrají do databáze. Na zápatí můžete hned vidět jejich počet. Pokud máte první řádek v souboru csv shodný s tímhle, můžete program použít pro jeho editaci, ať už je určený pro jakékoliv zařízení. Výsledek své práce ale musíte uložit do souboru csv a do radiostanice ho nahrát originálním programem CPS.

1.2) Načíst ze zařízení; Tohle je přímá komunikace s radiostanicí. Nemusíte nic nastavovat nebo vybírat. Pokud je správně nainstalovaný ovladač a radiostanice připojená datovým kabelem, program si ji najde a přečte její digitální contact list. Stanice Anytone neumí jiný konec komunikace s PC než restart. Po načtení dat se tedy odpojí a po chvíli znovu připojí. Pokud se v tomto krátkém časovém okamžiku znovu pokusíte o komunikaci, program správně ohlásí, že zařízení není připojeno.

1.3)  Importovat z webu Odska; (Jen windows 10 a novější) Program má svůj vnitřní webový prohlížeč, ve kterém se zobrazí přihlašovací stránka Odsky.  Dál mohou pracovat jen ti, kteří mají své platné ID. Přihlásíte se na web, přepnete na stránku "Seznam" a po zobrazení webové tabulky klepnete na tlačítko Importovat.  Všechny řádky tabulky se načtou do programu. Pak už se můžete z webu odhlásit a zavřít okno prohlížeče. Správce webu bych chtěl ujistit, že program nikterak nešmejdí po webu a tedy ho nijak nezatěžuje. Zobrazení v okně prohlížeče tohoto programu je stejné, jako prohlížení jakýmkoliv jiným prohlížečem. Data se těží až z toho, co je zobrazené v okně programu. Tedy offline lokálně v počítači uživatele z už stažené stránky.

1.4) Importovat z webu HAM DMR cz; (Jen windows 10 a novější) Postup je stejný, jako v předchozím případě. Stránka je ale veřejně přístupná, takže se není potřeba nikam přihlašovat a tabulka s daty se zobrazí rovnou. Tuto volbu tedy může zkoušet každý. Zde musím upozornit na to, že za dobu testování mého programu  stránky opakovaně nebyly přístupné. Správce webu zřejmě dost často řeší nějaké technické problémy. Možná to souvisí s tím, že stránky dodnes nemají adresu https://

02webthumb

Obr.2 - Import dat z webové tabulky

1.5) Stáhnout z BrandMeister; V tomto případě se stahuje hotový soubor user.csv. Import probíhá ve třech krocích. Nejprve se stáhne soubor do vašeho počítače. To může trvat několik sekund. Pak se data ze souboru načtou do pomocné databáze. Tento průběh už je znázorněný na "teploměru" spodní lišty. V pomocné databázi si můžete vybrat, co chcete zpracovat. Třeba vybrat jen české uživatele s ID začínajícím na 230 pomocí filtru. Až z okna odstraníte všechny nechtěné položky, zbývající věty načtete tlačítkem Importovat. 

Zde musím upozornit na důležitou podmínku. Čísla ID nesmí být duplicitní. Žádné se nesmí v seznamu opakovat. Jak tedy tuto nepříjemnost řešit v případě, že stahujeme seznam postupně z několika webů? Dá se očekávat, že většina ID bude ve všech seznamech současně. Já jsem se rozhodl postupovat následujícím způsobem. Před načtením položky do databáze zkontroluji, jestli tam už je věta se stejným ID. Pokud ano, položku nevložím ale zahodím ji. To znamená, že v databázi se objeví pouze položky vložené jako první. Pokud tedy importujete data ze všech tří webů, záleží na pořadí, v jakém to provedete. Ve všech případech bude na konci importu stejný počet položek. Ale ostatní údaje u konkrétních ID mohou být různé podle toho, odkud jste položku nahrávali poprve.

Dalším problémem je různorodost údajů v různých databázích. Do kterého sloupce vložit který údaj může být zdrojem diskuze. Stejně tak jako vyplnit údaje, které v načítaných položkách nejsou. Já jsem například z webu www.prevadece.cz údaj "Model" vložil do sloupce "Poznámka". Na další konverze radši nebudu upozorňovat. Pokud někdo narazí na případ, který mu bude vadit, můžeme to probrat.

2) Editace položek v databázi

2.1) Hledat ID; Databáze je trvale setříděná podle ID. Takže jakékoliv číslo můžete najít popotažením ScrollBaru. Pokud je ale v databázi moc položek, je jednodušší použít vyhledávání. K tomu slouží nabídka Hledat ID. Do okna zapišete hledané ID a databáze se automaticky posune na příslušnou položku. Pokud položka v databázi není, najde nejbližší podobné ID. Proto je dobré dát pozor, jestli jste opravdu na požadovaném záznamu. Jistě by bylo užitečné hledat i podle jiných kritérií, třeba Volací znak. K tomu je ale potřeba přetřídit databázi a to by mohlo být pomalé. Inu musím si něco schovat do příštích verzí programu.

2.2) Vložit položku; Zde si můžete vytvořit novou položku, zapsat do ni požadovaná data a pak ji vložit do databáze. Nezapomínejte, že čísla ID nesmí být duplicitní. To program zatím nehlídá. Tady budu muset ještě zapracovat.

2.3) Editovat položku; V okně se zobrazí aktuální věta, jejíž údaje můžete měnit. I když je v databázi povoleno vybrat víc položek současně, pro tuto volbu to neplatí. Editovat můžete vždy jen jednu větu. Opět pozor na duplicitu ID. I tady budu muset ještě přidat nějakou formu kontroly.

2.4) Hromadný zápis; Kvůli této volbě je povolený výběr vice položek současně. Řekněme, že jste načetli data ze tří zdrojů a v každém bylo označení země napsáno jinak (např. CZ, Česko a CZECH REPUBLIC). A vy je chcete sjednotit. Vyberete tedy všechny položky, které chcete přepsat, vyberete možnost "Hromadný zápis, Země" a do okna vepíšete, jak má označení země vypadat. Po klepnutí na OK se ve všech vybraných položkách přepíše údaj ve sloupci "Země". Vybírat se dá standardnímy postupy známými ve windows. Kliknutí myší, Ctrl + myš, Shift + myš, Ctrl + Shift + myš. Pokud je vybraná alespoň jedna položka, funguje i kombinace Ctrl + A = vyber všechno.

2.5) Mazání položek; Další dvě nabídky jsou určeny ke smazání položek. Buďto pouze těch vybraných, nebo úplně všech. 

3) Zpracování výstupů

3.1) Zapsat do zařízení; Technicky jde o stejný proces, jako při čtení. Pokud je radiostanice připojená, program do ní zapíše všechny položky ze zobrazené databáze. Zde vstupuje do hry nastavení výstupů v levém modrém sloupci programu. Pokud nastavíte výstup bez diakritiky a s omezením délky textů na 15 písmen, bude se program chovat identicky jako originální CPS. Zbývajíci kombinace jsou určeny pro zvědavé experimentátory, jako jsem já. Chod radiostanice obecně by se neměl těmito pokusy ovlivnit, ale obsah jednotlivých řádků na displeji je nevyzpytatelný. České znaky jsou spolehlivě nahrazeny čínským rozsypaným čajem. VAROVÁNÍ: Experimentování se zápisem do jiných typů zařízení vřele nedoporučuji! Nejde jen o komunikační protokol, ale i o adresy paměti, se kterými se pracuje. Zatím co čtení je celkem bezpečné, maximálně načtete nesmysly, zápis na nesprávné adresy by mohl přepsat něco důležitého a tím umrtvit zařízení.

3.2) Uložit jako soubor csv; Po kliknutí do této nabídky se zobrazí okno pro uložení souboru. Jedná se o výstup, takže na texty budou uplatněny všechna vybraná omezení. Tím si můžete ověřit, jak opravdu fungují. Po uložení a znovu načtení uvidíte, jak se texty změnily. Pokud souhlasí záhlaví souboru csv, můžete uložený soubor použít pro jakoukoliv radiostanici. Tím se dá program použít pro vytváření Digital Contact List pro víc zařízení, než je uvedeno v seznamu. Soubor ale musíte nahrát do radiostanice originálním programem CPS.

4) Tipy na práci s databází

4.1) Třídění; Kliknutím na záhlaví libovolného sloupce se položky setřídí abecedně podle obsahu tohoto sloupce. Když hledáte někoho s konkrétní volačkou, klepněte na záhlaví sloupce "Volací značka" a popotahovátkem si najedete na hledanou položku. Opakovaným klepnutím na záhlaví se věty setřídí v opačném pořadí. Zrušení třídění se provede klepnutím na záhlaví se stisknutou klávesou Ctrl. Toto třídění probíhá pouze na obrazovce, aby se vám lépe hledalo v zobrazených datech. Vlastní databáze zůstává trvale setříděna podle ID.

4.2) Seskupení dat; Třeba by vás mohlo zajímat, kolik lidí v databázi je z Jihlavy. Najedete myší na záhlaví sloupce "Město", stisknete levé tlačítko myší, záhlaví přetáhnete nad plochu s nápisem "Sem přetáhněte..." a uvolníte tlačítko myši. Tím se vytvoří skupiny měst a u každé skupiny je spočítáno, kolik položek obsahuje. Já mám u Jihlavy číslo 32.  Když klepnete na + na začátku řádku, zobrazí se vám jednotlivé položky. Pak můžete stejným způsobem záhlaví "Město" přetáhnout zpět mezi ostatní záhlaví. Pro tento účel byl vytvořen virtuální sloupec "Skupina". Do něj se automaticky okopírovaly první tři číslice ID, což jsou známá rozlišení 446 = Odska, 230 = Česko, 231 = Slovensko. Pokud chcete zjistit, kolik členů je ze které skupiny, přetáhněte záhlaví "Skupina" nad plochu "Sem přetáhněte..." stejně, jako jste to předtím udělali se záhlavím "Město". 

4.3 Filtrování; Tenhle postup je důležitý při importu dat z BrandMeister, který obsahuje téměř 300 tisíc položek. Pokud je nechceme importovat všechny, s výhodou opět použijeme záhlaví sloupce Skupina. Po najetí myší na toto záhlaví se v jeho pravém horním rohu zobrazí malý symbol. Když na něj klepnete, zobrazí se filtr, ve kterém opět najdete jednotlivé skupiny. Po zatržení skupiny zůstanou v okně databáze pouze položky vybrané skupiny. Chceme-li například vybrat pouze Čechy, zatrhneme skupinu 230. Pro Slováky zatrhneme skupinu 231. Samozřejmě lze vybrat i několik skupin současně, takže zatržením 230 a 231 se výběr omezí pouze na položky těchto dvou skupin. A můžeme je tlačítkem Importovat. Na obrázku to je 1189 položek.

 03filterthumb

Obr.3 - Filtrování položek podle skupin

Program jsem pomocí Googlu přeložil do angličtiny. Přesněji řečeno některé technické termíny jsem si přeložil do češtiny. Nechtěl jsem jako Čech psát anglický program, ale mix těchto dvou jazyků mě poněkud dráždil. Uznávám, že české překlady nemusí být "zažité", a tak se můžete kdykoliv přepnout a podívat se, jak to bylo v originále. Nebo používat jenom anglickou verzi. Některé překlady ještě nejsou funkční. Jedná se převážně o systémová tlačítka typu Yes / No / Cancel. 

Co bude dál samozřejmě netuším. Pro začátek jsem do výběru zařízení dal dvě radiostanice, které jsou z pohledu Digital Contact Listu identické, takže nezáleží na tom, kterou vyberete. V případě neshody se jen objeví varování. Pokud by program zaujal, rád přidám další radiostanice. Je to veliká technická výzva. Musel bych mít ale příslušnou stanici na čas k dispozici, abych mohl "odposlechnout" její komunikační protokol. Určitě bych chtěl otestovat starší verzi ID878UV. Obecně u mne mají Anytonky přednost, protože u všech typů předpokládám podobnost komunikačního protokolu. Ale zatím by mi stačila i diskuze kolem stávajícího provedení programu. Jestli jsem se vydal správným směrem a má smysl pokračovat.

2 komentářů

  • Zdravím.
    Absolutně skvělý software! Smekám klobouk... Jenom otázka - dostal jsi se ke zdrojákům orig. CPS, nebo ji disasembloval?
    Jirka Opatovice
    • Ahoj, dík za pochvalu. Ke zdrojákům originálního CPS jsem se nedostal. Ale čirou náhodou jsem narazil na maníka, který se pokusil napsat CPS pro linux. https://github.com/hmatuschek/qdmr/releases/tag/v0.12.0 Tohle jsem si prostudoval, bohužel jsem tam nikde nenašel adresy paměti, se kterými se komunikuje. Přitom tam musí být... Nicméně jsem zde našel parametry sériové komunikace. Takže jsem pak odchytil originální komunikaci na sériovém portu a tam už ty adresy jsou vidět. Jen pro úplnost - ovladač pro windows udělá z USB virtuální sériový port, se kterým pak vysílačka spolupracuje

      Upraveno 22. leden 2025 11:19 uživatelem Hugocz.

Zanechat komentář

Odpověď na Some User

E-mail: hugocz@jevicko.org Lokátor: JN89IP