{"id":128,"date":"2025-11-04T04:49:55","date_gmt":"2025-11-04T03:49:55","guid":{"rendered":"https:\/\/www.modellbau-yodi.de\/aax\/?p=128"},"modified":"2025-11-04T04:49:55","modified_gmt":"2025-11-04T03:49:55","slug":"eine-neue-app-qrp-log","status":"publish","type":"post","link":"https:\/\/www.modellbau-yodi.de\/aax\/2025\/11\/04\/eine-neue-app-qrp-log\/","title":{"rendered":"Eine neue APP QRP-Log"},"content":{"rendered":"<p>Auf meinem Handy l\u00e4uft als Betriebssystem Linux. Das von <a href=\"https:\/\/www.ubuntu-touch.io\" target=\"_blank\" rel=\"noopener\">UBports<\/a>. Es gibt im dazugeh\u00f6rigen\u00a0<a href=\"https:\/\/open-store.io\" target=\"_blank\" rel=\"noopener\">OpenStore<\/a> wenig bis gar keine AFU Apps. Deshalb habe ich mich entschlossen eine Logbuch APP mit echter DX-Clusteranbindung zu entwickeln. <!--more-->Da ich \u00fcberwiegend in der Programmiersprache GAMBAS programmiere betrete ich hier Neuland mit C++, QML als Programmiersprache. KI ist ja in aller Munde also hab ich es ausprobiert. ich benutze <a href=\"https:\/\/chatgpt.com\" target=\"_blank\" rel=\"noopener\">ChatGPT<\/a> und <a href=\"https:\/\/gemini.google.com\" target=\"_blank\" rel=\"noopener\">Gemini<\/a>. <a href=\"https:\/\/duckduckgo.com\" target=\"_blank\" rel=\"noopener\">Duck.ai<\/a> hat mir auch schon geholfen aber man muss da nachbohren bis etwas kommt.<br \/>\nich habe beispielsweise gefragt &#8222;ich brauche eine Funktion zum anlegen einer Datenbanktabelle&#8220;. Als Ergebnis bekam ich<\/p>\n<div class=\"codecolorer-container qml default\" style=\"overflow:auto;white-space:nowrap;width:835px;\"><div class=\"qml codecolorer\">&nbsp;<span class=\"kw1\">function<\/span> checkAndCreateTable<span class=\"br0\">&#40;<\/span>tabelle<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw2\">var<\/span> db <span class=\"sy0\">=<\/span> LocalStorage.<a href=\"http:\/\/qt-project.org\/doc\/qt-5\/qtquick-localstorage-qmlmodule.html\"><span class=\"kw12\">openDatabaseSync<\/span><\/a><span class=\"br0\">&#40;<\/span>dbName<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;1.0&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Logbuch Daten&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">1000000<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\ndb.<span class=\"me1\">transaction<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>tx<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw2\">var<\/span> rs <span class=\"sy0\">=<\/span> tx.<span class=\"me1\">executeSql<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;SELECT name FROM sqlite_master WHERE type='table' AND name=?;&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#91;<\/span>tabelle<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>rs.<span class=\"me1\">rows<\/span>.<span class=\"me1\">length<\/span> <span class=\"sy0\">===<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\ntx.<span class=\"me1\">executeSql<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CREATE TABLE &quot;<\/span> <span class=\"sy0\">+<\/span> tabelle <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot; (id INTEGER PRIMARY KEY, call TEXT, name TEXT, time TEXT, date TEXT, qrg TEXT, dok TEXT, rst_sent TEXT, rst_rcvd TEXT, mode TEXT, reference TEXT, qth TEXT,bemerkung TEXT, qsl_sent INTEGER);&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nconsole.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\u2705 Tabelle '&quot;<\/span> <span class=\"sy0\">+<\/span> tabelle <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;' wurde erstellt.&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nconsole.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\u2139\ufe0f Tabelle '&quot;<\/span> <span class=\"sy0\">+<\/span> tabelle <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;' existiert bereits.&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>. Diese Funktion habe ich direkt \u00fcbernommen. Das Grundger\u00fcst habe ich mit\u00a0<a href=\"https:\/\/clickable-ut.dev\/\" target=\"_blank\" rel=\"noopener\">Clickable<\/a> erstellt. Aber nun zur App.<\/p>\n<p><strong><em>Was funktioniert schon ?<\/em><\/strong> <a href=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/log1.png\"><img loading=\"lazy\" class=\"alignright size-medium wp-image-135\" src=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/log1-182x300.png\" alt=\"\" width=\"182\" height=\"300\" srcset=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/log1-182x300.png 182w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/log1.png 402w\" sizes=\"(max-width: 182px) 100vw, 182px\" \/><\/a> Das eigentliche <em>Logbuch<\/em>. Naja eigendlich nix besonderes, man kann Daten eingeben und in einer SQLite Datenbank speichern.\u00a0 Bei einen Klick unten auf das Datum oder der Uhrzeit wird das Datum und die Uhrzeit in die Formularfelder \u00fcbernommen. Wird ein Rufzeichen eingegeben schaut die App nach ob schon ein Kontakt zustande kam und zu welchen Land der Landeskenner geh\u00f6rt. Wenn ein Land gefunden wird schreibt die App es ins Formularfeld. Der Loginhald ist unterhalb der Formularfelder und kan nach oben gescrollt werden.<\/p>\n<p><a href=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673.png\"><img loading=\"lazy\" class=\"alignleft size-medium wp-image-137\" src=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-146x300.png\" alt=\"\" width=\"146\" height=\"300\" srcset=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-146x300.png 146w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-498x1024.png 498w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-768x1579.png 768w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-747x1536.png 747w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673-996x2048.png 996w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/screenshot20251029_131807673.png 1080w\" sizes=\"(max-width: 146px) 100vw, 146px\" \/><\/a> <em>DX-Cluster<\/em>. \u00dcber Telnet wird eine Verbindung zu einen DX-Cluster Server hergestellt. Der Server kann \u00fcber einer Conbobox ausgew\u00e4hlt werden. Das ist schneller als wen erst eine Webseite aufgerufen wird. Nach dem der Login durch die Authentifizierung best\u00e4tigt wurde trudeln die ersten DX-Meldungen ein. Die App erg\u00e4nzt jede Meldung durch eine Landesflagge, L\u00e4ndernamen ind Kontinent. Unterhalb der DX-Meldungen wird eine Balkengrafik erstellt die die Bandbelegung anzeigt. Dadurch wird gezeigt auf welchen Band am meisten Betrieb ist.<\/p>\n<p><a href=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/gmaSpots.png\"><img loading=\"lazy\" class=\"alignright size-medium wp-image-134\" src=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/gmaSpots-182x300.png\" alt=\"\" width=\"182\" height=\"300\" srcset=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/gmaSpots-182x300.png 182w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/gmaSpots.png 402w\" sizes=\"(max-width: 182px) 100vw, 182px\" \/><\/a><em>GMA-Spots<\/em>. Zus\u00e4tzlich habe ich Die letzten 20 Meldungen der GMA (Global Mountain Activity) hinzu gef\u00fcgt. Je nach dem um was es sich f\u00fcr eine Meldung handelt wird jeder Meldung ein Icon voran gestellt.<br \/>\n\u26f0 f\u00fcr SOTA, \ud83c\udf33 f\u00fcr WWFF, \ud83c\udfde f\u00fcr GMA. Dem entsprechend wird die Hintergrundfarbe der Meldungen eingestellt. Beim anklicken einer Meldung wird der Browser mit der Seite von www.openstreetmap.org aufgerufen und die Reference angezeigt.<\/p>\n<p><img loading=\"lazy\" class=\"alignleft size-medium wp-image-133\" src=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/Einstellungen-182x300.png\" alt=\"\" width=\"182\" height=\"300\" srcset=\"https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/Einstellungen-182x300.png 182w, https:\/\/www.modellbau-yodi.de\/aax\/wp-content\/uploads\/2025\/11\/Einstellungen.png 402w\" sizes=\"(max-width: 182px) 100vw, 182px\" \/>Einstellungen. Nat\u00fcrlich gibt es auch eine Seite wo Einstellungen vorgenommen werden k\u00f6nnen. Hier\u00a0 kann das eigene Rufzeichen usw. eingegeben werden, ein anderes Logbuch ausgew\u00e4hlt werden oder ein neues Logbuch erstellt werden.<\/p>\n<p>Was noch nicht geht. Derzeit k\u00e4mpfe ich mit den Layout f\u00fcr ein Notizbuch. Auch die KIs sind zu bl\u00f6d es fehlerfrei zu erstellen. Danach kommt noch ein Export der Logdaten und dann ist die APP fertig.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf meinem Handy l\u00e4uft als Betriebssystem Linux. Das von UBports. Es gibt im dazugeh\u00f6rigen\u00a0OpenStore wenig bis gar keine AFU Apps. Deshalb habe ich mich entschlossen eine Logbuch APP mit echter DX-Clusteranbindung zu entwickeln. <a class=\"more-link\" href=\"https:\/\/www.modellbau-yodi.de\/aax\/2025\/11\/04\/eine-neue-app-qrp-log\/\">weiterlesen<\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/posts\/128"}],"collection":[{"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":9,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/posts\/128\/revisions\/143"}],"wp:attachment":[{"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modellbau-yodi.de\/aax\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}