Dodatek 1.7.2025 Doplněna plná podpora radiostanice Alinco DJ-MD5X.
Program Digital Contact List Editor - DclEditor
Jedná se o program pro přímou editaci digitálních kontaktů různých digitálních radiostanic. Stáhnout si ho můžete v sekci Soubory ke stažení.
Podporovaná zařízení a jejich formáty souborů csv:
- Alinco DJ-MD5X
- Anytone D168UV
- Anytone D578UV
- Anytone D878UV2
- Baofeng DM1701 (jen soubor csv)
- Radtel RT-4D
- program BlueDV (jen soubor csv)
Impulzem k napsání tohoto programu byla moje zvědavost, jestli radiostanice D878UV2 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 (D878UV2). Program se postupně rozvinul v možnost konvertovat různé formáty souborů csv mezi sebou.
Upozornění: Protože jsem začínal s radiostanicí Anytone, používám k označení seznamu digitálních kontaktů její pojem "Contact List". Jiné radiostanice ale mohou používat jiné označení. Například firma Radtel zvolila "Address Book". Tyto alternativní názvy ale nebudu do programu ani na webové stránky doplňovat.
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 Anytone. 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 většinou neumí zpracovat.
Co všechno tedy program DCL Editor umí:
- číst / ukládat soubory *.csv
- přímo komunikuje s několika typy radiostanic, 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 data ze zobrazené tabulky. 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í položek a podobně.
- 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 řádově 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ů.
1) Zpracování vstupů
1.1) Otevřít soubor *.csv; Po kliknutí na nabídku se zobrazí dialog pro výběr souboru. Formát souboru je kontrolován na správnost záhlaví podle vybraného zařízení. Položky souboru se nahrají do databáze. Na zápatí můžete hned vidět jejich počet. Program můžete použít pro editaci nahraných položek, ať už jsou určeny pro jakékoliv zařízení. Výsledek své práce uložíte do souboru csv. Do nepodporované radiostanice ho nahrajete 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 obvykle 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. Pokud se nezobrazí, zkuste tlačítko "Znovu načíst web". Dál mohou pracovat jen ti, kteří mají své platné ID. Přihlásíte se na web, přepnete se 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. Pokud se nezobrazí, zkuste i tady tlačítko "Znovu načíst web". Při testování programu se občas stávalo, že stránka nebyla přístupná, a to ani v běžném webovém prohlížeči.
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é a slovenské uživatele pomocí přednastaveného filtru v menu "Filtry pro BM". Bohužel z nabídky filtrů lze použít vždy pouze jeden. Kdo chce použít i další, stáhne si po dokončeném importu soubor BM znovu a vybere jiný filtr. Data se přidají k těm už načteným. Zdatnějším uživatelům prozradím, že filtr lze aktivovat i kliknutím na ikonu v záhlaví sloupce "Skupina". Nebrblejte, že tam žádná ikona není, a najeďte na záhlaví myší. Až z okna databáze odstraníte pomocí vybraných filtrů všechny nechtěné položky, zbývající věty načtete tlačítkem Importovat.
Obr. 3 - Použití přednastavených filtrů
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 zdrojů? Dá se očekávat, že některá ID budou ve více seznamech současně. Já jsem se rozhodl vyřešit tento problém následujícím způsobem. Před načtením položky do databáze program zkontroluje, jestli tam už je věta se stejným ID. Pokud ano, položku nevloží, ale zahodí. To znamená, že do databáze se nahrají pouze položky, které tam ještě nejsou. A to také znamená, že záleží na pořadí, v jakém import dat 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) Záhlaví databáze; Různé radiostanice mohou ve svém seznamu kontaktů používat různé položky. Aby bylo zřejmé, které sloupce vybraná radiostanice používá, jsou jejich záhlaví obarveny zeleně. Sloupce s šedým záhlavím budou při ukládání zahozeny a nemá smysl data v takovém sloupci upravovat. Výjimkou je šedivý sloupec "Příjmení", který se při ukládání připojí za text zeleného sloupce "Jméno" a tak spolu vytvoří jeden údaj. Pokud máte nastavený limit délky textů a v položce jméno je už dlouhé slovo, nemusí se připojení příjmení prakticky projevit. Pokud některá radiostanice používá samostatně položku "Jméno" i "Příjmení", budou jejich záhlaví zelená a při ukládání se texty nespojí v jeden údaj.
2.2) 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 se opravdu přesunuli na požadovaný záznam. 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.3) 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.4) 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. Pokud budete měnit ID, dejte si opět pozor na případnou duplicitu. I tady budu muset ještě přidat nějakou formu kontroly.
2.5) 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.6) 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. Mazání vybraných položek je vždy pomalé, protože se musí projít celá databáze a testovat, jestli je příslušná položka vybraná. Proto v případě mazání všech položek nedoporučuji vybrat vše pomocí Ctrl + A a pak mazat vybrané položky.
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 16 písmen, bude se program chovat identicky jako originální CPS Anytone. Jen upozorním na jednu zvláštnost programu Anytone. Položka "City" má maximální délku o jeden znak kratší, než ostatní textové položky. Položka "Call Sign" má maximální délku 8 znaků. Tyto závislosti nejsou výběrem délky textů ovlivněny. Takže nelze zvýšit počet znaků volačky nad 8 znaků. 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ěna 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 21. 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 atd. 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".
Obr. 4 - seskupení dat podle sloupce
Závěr
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 výhradně 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. Pokud by byl zájem, mohu přidat i další překlady. Ideální by ale bylo, kdybych dostal hotový překlad od někoho, kdo daným jazykem mluví a zná používané technické termíny.
Do programu lze doplňovat i další radiostanice. Pro čtení / zápis souborů csv stačí, když mi někdo mailem pošle funkční soubor csv. Pokud bych měl doplnit i přímou komunikaci přes USB port, musel bych mít příslušnou stanici na čas k dispozici, abych mohl "odposlechnout" její komunikační protokol. V tomto směru musím rád veřejně poděkovat Zdenkovi Jihlava, který mi už nezištně a nebojácně dvě radiostanice zapůjčil. Děkuji.
Dodatek 1.7.2025 - verze programu 1.0.4
- Doplněna plná podpora radiostanice Alinco DJ-MD5X, tedy i přímé čtení / zápis
- Doplněna možnost hromadné editace u položek Call Type a Call Alert
Rozšíření hromadné editace se může hodit třeba v případě, že vlastníte dvě radiostanice, z nichž jedna v seznamu kontaktů nepoužívá údaje Call Type nebo Call Alert a druhá ano. Pokud chcete csv první vysílačky upravit i pro druhou stanici, můžete využít následující postup. Otevřete soubor csv, vyberete všechny řádky, které budou mít ve sloupci Call Type neno Call Alert stejný obsah a pak je naplníte pomocí hromadné editace. To stejné můžete použít i u druhého sloupce.
Program si můžete stáhnout v sekci Soubory ke stažení / Program DclEditor.
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