⟵ zur Projektübericht

Motivation

Der ADFC-Stormarn e.V. verwendet Klebeetiketten zur Codierung von Fahrrädern.

EIN-Code Etikett

Auf diesen Etiketten ist ein EIN-Code (Eigentümer-Identifizierungs-Nummer) aufgedruckt, die es der Polizei, den Fundbüros und dem ADFC erlauben, den Eigentümer eines Fahrrads zu ermitteln. Eine über aufgeklebte Etikett angebrachte Plombierfolie schützt dieses vor dem Ablösen.

ADFC EIN-Code-Etikett aufgeklebt

Dieses Verfahren eignet sich auch für andere Gegenstände, wie Kameras, Fahrrad-Akkus, Kinderwagen, Pferdesättel, etc.

Die Codier-Aktionen finden häufig j.w.d. statt und nicht immer gibt es dort einen verlässlichen Zugang zum Internet. Die Daten zur Generierung der EIN-Codes werden deshalb in einer lokal zur Verfügung stehenden SQLite-Datenbank abgelegt.

Diese Seite beschreibt den Funktionsdialog Online für eine Online-Abfrage des EIN-Codes mit dem EIN-Code-generator des Fachausschuss Technik für den Fall, dass der Straßenschlüssel (noch) nicht in der Datenbank vorhanden ist.


In­halts­ver­zeich­nis

Funktionsdialog OnlineAbfrage

Implementierung

Entwurf

Funktionsprinzip

Initialisierung


Funktionsdialog OnlineAbfrage

Der Kopf des Dialogbildschirms wird von einer Aktionsleiste gebildet. Deren Implementierung und Funktion ist im Kapitel ActionBar beschrieben. Die Funktionen zum Etikettendrucken sind im Kapitel Klebeetikett drucken dokumentiert.

Screenshot Funktionsdialog Online-Abfrage: Übernahme der Daten vom Hauptbildschirm
Übernahme der Daten
vom Hauptbildschirm
  Screenshot Funktionsdialog Online-Abfrage: Adressdaten müssen nicht ausgeschrieben werden aber eindeutig sein
Adressdaten müssen nicht
ausgeschrieben werden
aber eindeutig sein
  Screenshot Funktionsdialog Online-Abfrage: Gefundener EIN-Code
Gefundener EIN-Code
  Screenshot Funktionsdialog Online-Abfrage: Fehlerhafte Assoziation
Fehlerhafte Assoziation

In einer WebViewer-Komponente wird die Seite EIN-Code-Generator des ADFC Fachausschuss Technik aufgerufen. Wenn der Dialog vom Hauptbildschirm aus aufgerufen wird, werden dort bereits erfasste Adressdaten in das Web-Formular übertragen, müssen also nicht erneut eingetragen werden. Wenn ein Code generiert wurde, wird die Schaltfläche zum Etikettendruck freigeschaltet und ein Etikett kann mit dem generierten Code gedruckt werden.

Implementierung

Entwurf

Entwurf des Funktionsdialogs OnlineAbfrage

Funktionsprinzip

Bei der Initialisierung des Dialogs werden evtl. übergebene Daten in die Web-Site des EIN-Code-Generators übertragen. Mit Hilfe eines Timers wird überprüft, ob ein Code generiert wurde. Dann wird die Möglichkeit zum Etikettendruck freigeschaltet.

Initialisierung

Wenn die Web-Site des EIN-Code-Generators geladen wurde (Ereignis WebViewer.PageLoaded), werden die übergebenen Adressdaten in die Seite eingefügt. Das HTML-form-Element hat folgenden Aufbau:

<form method="post" action="/mein.pl" enctype="multipart/form-data">
   <table border="0">
      <tr>
         <td>
            <b>Ort</b>
         </td>
         <td>
            <input type="text" name="name"/>
         </td>
      </tr>
      <tr>
         <td>
            <b>Straße</b>
         </td>
         <td>
            <input type="text" name="str"/>
         </td>
      </tr>
      <tr>
         <td>Haus-Nr.</td>
         <td>
            <input type="text" name="hsnr"/>
         </td>
      </tr>
      <tr>
         <td>Vorname</td>
         <td>
            <input type="text" name="n1"/>
         </td>
      </tr>
      <tr>
         <td>Nachname</td>
         <td>
            <input type="text" name="n2"/>
         </td>
      </tr>
      <tr>
         <td/>
         <td>
            <input type="submit" name="suchen" value="suchen"/>
         </td>
      </tr>
   </table>
</form>

Die WebViewer-Komponente erlaubt es, JavaScript-Anweisungen auszuführen. Nacheinander werden, soweit übergeben, alle Elemente übertragen:

Initialisierung nach Laden der Seite

Die Einzelnen JavaScript-Anweisungen haben dieses Format:

document.querySelector('input[name=...]').setAttribute('value', '...')

... wird durch den Feldnamen bzw. den zu übertragenden Wert ersetzt. Für das Einfügen der Initialen in die Namensfelder müssen diese vorher getrennt werden.

Ermittlung der namen

Seitenanalyse

Jede Sekunde wird überprüft, ob ein Code in der Seite generiert wurde. Eine Sekunde ist ein guter Kompromiss zwischen CPU-Belastung und Reaktionsgeschwindigkeit. Die Analyse der Seite wird im Timer-Ereignisses des Timers clkAnalyser gestartet:

Start der Analyse im Timer-Event

Die JavaScript-Anweisung ist

window.AppInventor.setWebViewString(document.documentElement.innerHTML)

Durch diese Anweisung wird die Eigenschaft WebViewString mit dem Seiteninhalt der Web-Site gefüllt und das Ereignis WebViewStringChange ausgelöst. In diesem Ereignis wird geprüft, ob die Seite den Text "Die zugehörige Adresse von <b>" enthält:

Überprüfun g des Seiteninhalts

Der ermittelte Code ist in eine Tabellenzelle eingebettet:

<td>
   <blockquote>Die zugehörige Adresse von <b>OD00600312032UB25</b> lautet:</blockquote>
   <blockquote>
      <b>U</b>
      <b>B</b>
      <br/>Deviller Straße <b>32</b>
      <br/>Bargteheide<p/>
   </blockquote>
</td>

Er lässt sich anhand des führenden "Die zugehörige Adresse von <b>" und des folgenden "</b>" sehr gut separieren.

Wird ein Code gefunden wird dieser noch einmal separat angezeigt und die Schaltfläche zum Drucken freigeschaltet.