2022
|
|
Ein
RFO-BASIC-Programm für Android
Smartpones und Tablets
|
|
ARD-Text-Morser
Ergänzungen zum
Buch Messen mit dem
Smartphone
|
Ralf Beesner zeigt an anderer Stelle wie er den Videotext der ARD auf einem Linux-Computer in Morse-Töne wandelt. Die Idee kann man auch auf dem Handy in BASIC umsetzen. Benötigt wird lediglich die kostenlose APP RFO-BASIC! aus dem Play-Store, die inzwischen wieder verfügbar war, aber nun nur noch über den Link erreichbar ist.
Diese einfache Programmiersprache war zu seiner Zeit der Grund zur Verfassung des ersten eigenen eBooks, welches auch im Jahr 2021 noch ab und zu gelesen wird bzw. wurde. Da das BASIC! auch eine extrem einfache Sprachausgabe bereit stellt, lassen sich die Meldungen auch vorlesen. Das Programm in seiner Gesamtheit besteht aus etwa 130 Zeilen und beinhaltet folgende Features:
- Datenzugriff auf HTTPS-Seiten
- Isolierung von Überschrift und Meldung
- Isolierung der Meldung und Formatierung
- Morsen oder/und vorlesen der Meldung
Die Morse-Tabelle wird aus DATA/READ/RESTORE Werten angelegt. Ein Unterprogramm morsen gibt Texte in Morsetönen aus, die sich in einer Zeichenkette M$ befinden. Am Anfang des Listings wird die URL und die zu holenden Seiten festgelegt.
Die Tonerzeugung erfolgt durch den ebenfalls einfachen Aufruf Tone Frequenz, Dauer. Allerdings ist die kürzeste Zeit auf dem hier verwendeten Handy ca. 85 ms, wodurch gerade noch so etwa 12 Worte pro Minute gesendet werden können. Es gibt sicher elegantere Programmstrukturen zur Lösung dieser Aufgabe, aber das ganze Programm in einem Quelltext aus 130 Zeilen (inklusive https) hat auch seinen Reiz.
Ein Kochrezept für Android-Benutzer:
- App RFO-BASIC! installieren
- Text kopieren oder den Link darunter anklicken (reiner Text)
- App aufrufen und Text einfügen
- Mit RUN das Programm starten und eventuell Speichern
|
|
Das Listing morst lediglich die Überschriften in der hier dargestellten Form, da die Meldungen doch einen recht langen Durchgang zur Folge hätten. Die Sprachausgabe Text To Speech TTS ist hier per Ausrufezeichen auskommentiert und kann so einfach zugeschaltet werden. Soll die Meldung auch kurz oder lang als Tonsignal ertönen, so muss T$ nach M$ kopiert werden und dann die Ausgabe mit GOSUB MORSEN erfolgen. Unterhalb des Listings befindet sich der Link zum reinen Text.
!Ard-Text Reader 03.03.2022
url$="https://www.ard-text.de/mobil/"
p$="104105106107108109110111112113114115116117"
p$=p$+"136137138139140141142143144145146147148149"
WAKELOCK 2:CLS
PRINT "Videotext für Morser"
m$="cq cq " : GOSUB MORSEN
FOR Seite = 1 TO LEN(p$) STEP 3
!CLS
M$=MID$(p$,Seite,3): GOSUB MORSEN
GRABURL a$,url$+M$
x=IS_IN("<h2 class=",a$)
IF x>0 THEN
x=IS_IN("<h1>",a$)
a$=MID$(a$,x+4)
y=IS_IN("</h1>",a$)
h$=LEFT$(a$,y-1)
ELSE
x=IS_IN("<h2><b>",a$)
a$=MID$(a$,x+7)
y=IS_IN("</b>",a$)
h$=LEFT$(a$,y-1)
ENDIF
IF x+y>0 THEN
!PRINT h$
M$=h$
GOSUB morsen
f$="<div class='std'>"
x=IS_IN(f$,a$)
a$=MID$(a$,x+LEN(f$))
f$="</div>"
y=IS_IN(f$,a$)
T$=LEFT$(a$,y-1)
T$=REPLACE$(T$,"<p>","")
T$=REPLACE$(T$,"</p>","")
T$=REPLACE$(T$,CHR$(10)," ")
T$=REPLACE$(T$," "," ")
T$=REPLACE$(T$," "," ")
T$=REPLACE$(T$," "," ")
!PRINT T$
! TTS.INIT
! TTS.SPEAK h$
! TTS.SPEAK T$
PAUSE 2000
ENDIF
NEXT Seite
m$="ende ard-text. qrt"
GOSUB morsen
END
MORSEN:
dit = 85 :! etwa 12 wpm
dah = 3*dit
f = 880
REM Morsetabelle
L$= "ABCDEFGHIJKLM"
L$=L$+"NOPQRSTUVWXYZ"
L$=L$+"1234567890"
L$=L$+".,?!'\"()&:;/_=+-$@"
n =LEN(L$)
READ.FROM 1
READ.DATA ".-","-...","-.-.","-..",".","..-.",
READ.DATA "--.","....","..",".---","-.-",".-..","--"
READ.DATA "-.","---",".--.","--.-",".-.","...","-",
READ.DATA "..-","...-",".--","-..-","-.--","--.."
READ.DATA ".----","..---","...--","....-",".....",
READ.DATA "-....","--...","---..","----.","-----"
READ.DATA ".-.-.-","--..--","..--..","-.-.--",
READ.DATA ".----.",".-..-.","-.--.","-.--.-",".-..."
READ.DATA "---...","-.-.-.","-..-.","..--.-",
READ.DATA "-...-",".-.-.","-....-","...-..-",".--.-."
DIM c$[n]
FOR i=1 TO n
READ.NEXT c$[i]
NEXT i
REM Ausgabe Zeichenkette M$
M$=UPPER$(M$)
M$=REPLACE$(M$,"Ä","AE")
M$=REPLACE$(M$,"Ö","OE")
M$=REPLACE$(M$,"Ü","UE")
M$=REPLACE$(M$,"ß","SS")
M$=REPLACE$(M$,"ß","SS")
M$=REPLACE$(M$,"ä","AE")
M$=REPLACE$(M$,"ü","UE")
M$=REPLACE$(M$,"ö","OE")
PRINT M$
FOR i = 1 TO LEN(M$)
z$=MID$(M$,i,1)
IF z$=" " THEN
PAUSE 7*dit: REM Worttrenner
ELSE
REM L$ ist Buchstabe, C$ ist Code
REM suche aktuellen Buchstabe
ix=IS_IN(z$,l$)
IF ix>=1 THEN
REM Morse Buchstabe
PRINT Z$+" "+c$[ix]
FOR j = 1 TO LEN(c$[ix])
b$=MID$(c$[ix],j,1)
IF b$="." THEN
TONE f,dit
ELSE
TONE f,dah
ENDIF
PAUSE dit
NEXT j
REM cw(c$[IS_IN(z$,l$)])
ENDIF
PAUSE 3*dit: REM Zeichentrenner
ENDIF
NEXT i
RETURN
v01.91 of BASIC auf Android
9
Hier der reine
Quelltext.
Der
Vorteil dieser Variante ist, dass sie
sich überall dort realisieren lässt wo
ein Internet-Zugang besteht: Ob im
Warteraum, Bus oder dem Sofa - überall
ist das BASIC sofort einsetzbar.
Hier
das selbe Projekt mit dem ESP8266.
Hier weitere Informationen zum Buch
|
|