Der ADFC-Stormarn e.V. verwendet Klebeetiketten zur Codierung von Fahrrädern.
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.
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.
Inhaltsverzeichnis
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.
![]() Übernahme der Daten vom Hauptbildschirm |
![]() Adressdaten müssen nicht ausgeschrieben werden aber eindeutig sein |
![]() Gefundener EIN-Code |
![]() 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.
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.
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:
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.
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:
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:
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.