Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Softwaredoku
Hochschule Karlsruhe Logo Informationstechnik
CM-IoT-App
Sommersemester 2020
Christian Schmidt
Jonas Gentner

Software Dokumentation


Implementierung und Funktion (Website)

Bei dem "Order"-Button, über den ein konfigurierter Cocktail bestellt werden kann, handelt es sich um eine Kopie der einzelnen Bestellbuttons auf der Startseite zum Bestellen der vordefinierten Cocktails. Das bedeutet, bei Betätigen dieses Buttons wird derselbe Code zum Beschreiben des Glases ausgeführt. Der einzige und wesentliche Unterschied zu den bisher verwendeten Buttons ist, dass die Information, die auf das Glas geschrieben werden soll, nicht aus einer Look-up-Table gelesen wird, sondern dynamisch gespeichert werden muss. Vor der Implementierung des Konfigurators wurde die zu schreibende Information in dem ID-Attribut des Buttons hinterlegt. Da dieses Attribut allerdings statisch ist und nicht z.B. über javascript-Funktionen verändert werden kann, musste dies für den Konfigurator geändert werden. Um den Code möglichst einfach zu halten und sich das Name-Attribut des Buttons ändern lies, wurde der Code für die gesamte Bestellstation so verändert, dass die zu schreibende Information nun bei allen Bestellbuttons in dem Name-Attribut hinterlegt wird. Für die vordefinierten Cocktails ist somit der jeweilige Cocktailname, der Name des jeweiligen Bestellbuttons.
Für die konfigurierten Cocktails wird dynamisch nach jeder Änderung durch den Nutzer ein neuer String generiert und als Name des Buttons festgelegt. Dieser String besteht aus einer Aneinanderreihung von Zahlen, welche die jeweiligen Mengenverhältnisse representieren.



Obige Beispielkonfiguration resultiert folglich in einen String mit folgender Struktur: 015010040155000000000000
Diese Information wird dann auf das Glas geschrieben und von der CocktailMaschine ausgelesen.

Implementierung und Funktion (Cocktail Maschine)
Bei dem Auslesen des Glases an der Cocktailmaschine wird zuallererst überprüft, ob es sich um einen vordefinierten Cocktailnamen oder um einen Zahlenstring aus Mengenverhältnissen handelt. Dafür wurde die bereits vorhandene Implementierung um eine Abfrage erweitert, welche prüft, ob der empfangene String in der vorimplementierten Cocktailliste zu finden ist:

bool cFlashMemory::getIngredients(const char * pCocktail, byte * pIngredients, bool &pCustomCocktail)

Wenn nicht, handelt es sich entweder um einen konfigurierten Cocktail oder um einen Fehler. Die Reihenfolge der Zutaten ist für die Bestellstation sowie die Cocktailmaschine gleich definiert. Die Cocktailmaschine muss somit lediglich den String in Zahlen aufteilen
und in das Array schreiben:

 pIngredients[h] = (byte) temps.toInt();

Nachdem die Zutaten als ml in der jeweiligen Stelle des Arrays beschrieben werden, erfolgt am Ende der veränderten Funktion noch das Umschalten der bool Variable 'pCustomCocktail'.

pCustomCocktail = true;

Diese bool Variable befindet sich in 'Procesdures.h' und wurde dem Struct 'sCocktailOrder' neu hinzugefügt.
Der Struct dient dem Speichern aller relevanten Daten der Cocktailbestellung.
Somit ist die Cocktailbestellung Objektorientiert.
Die neue bool Variable wird in der 'cProcedures.cpp' wichtig:

bool determineIngredients(char* pOrderName, byte* pIngredients, bool &pCustomCocktail)

Die Funktion 'determineIngredients' wird gewöhnlicherweise verwendet, um alle Zuataten aus einem Rezept zu normieren.
Das Bedeutet, dass die Mischungverhältnisse der Zutataten auf das Volumen des Glases (aktuell 220ml) angepasst wird.
Dies ist für den Fall des CustomCocktails nachteilig, denn die Zutaten wirden auf der Website in ml angegeben.
Die vordefinierten Cocktails bestehen dahingegen nur aus Mischungsverhältnissen.
Aus diesem Grund wird mit einer Abfrage ermittel, ob es sich um einen CustomCocktail oder um einen vordefinieretn Cocktail handelt.

if(pCustomCocktail == false)

Handelt es sich um einen vordefinieretn Cocktail (false), so müssen die Zutaten (ingredients[8]) normiert werden.
Handelt es sich um einen CustomCocktail, so wird das normieren übersprungen.








  Mit Unterstützung von Prof. J. Walter Sommersemester 2020