2022
HOME

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 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

Programm
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$,"&#XDF;","SS")
M$=REPLACE$(M$,"&#XE4;","AE")
M$=REPLACE$(M$,"&#XFC;","UE")
M$=REPLACE$(M$,"&#XF6;","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.


.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt