Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />
Diese theoretische Beschreibung hat das Gerät mit allen seinen Werkzeugen für die Programmierung<br />
vorgestellt. Jedoch nicht konkret gezeigt, wie man überhaupt einen Befehl in einer bestimmten Programmiersprache<br />
senden, oder eine Antwort einer Abfrage an SIOS bekommen kann. Nichtdestotrotz<br />
genügten für unser <strong>Projekt</strong> die Informationen über die Befehlsätze und die Konfigurationselemente, um<br />
die SIOS mit unserer selbst geschriebenen Software zu steuern. Wir haben mit diesen Informationen ein<br />
Programm in C/C++ entwickelt, um das Gerät anzusteuern und werden es in folgenden Zeilen in dem<br />
Abschnitt Programmierung im Detail vorstellen.<br />
14.2.2 Programmierung<br />
Für unser <strong>Projekt</strong> war es die Aufgabe der SIOS-Schnittstelle, einen Informationsaustauchen zwischen<br />
dem virtuellen Teppich in der Welt und der Motion-Platform zu ermöglichen. Aus den Aktivitäten der<br />
Komponenten sowohl in der realen Welt (wie die Sensoren, die Geschwindigkeitsschalter, die Lüfter und<br />
die Relais der Plattform) als auch in der virtuellen Welt (wie den virtuellen Teppich durch die Engine)<br />
ergeben sich die Parameter für die Kommunikation, die über das Interface abläuft. Das Programm sollte<br />
folgendes tun: über die SIOS die Werte der Sensoren lesen und dadurch die Winkelneigung des Teppichs<br />
bestimmen, anschließend die Kollisionseffekte und die Windsimulation in die virtuellen Welt übertragen.<br />
1. Zugriff auf die SIOS:<br />
Der Zugriff erfolgte durch den seriellen Port des PCs. Jeder angesprochene Port muss mit allen Informationen<br />
über die Konfiguration der SIOS, dem Namen des PC-Ports und den auszuführenden<br />
Aktionen geöffnet werden. Dafür wird die Variable HANDLE-File unter Windows (unter Linux<br />
eine Variable Filedescriptor) hergestellt, indem alle diese Informationen aufgebaut werden. Damit<br />
der Zugriff auf mindestens zwei Ports möglich ist, existieren die drei Methoden OpenPort,<br />
setConfigurationPort und setCommunicatioTimeouts, deren Parameter eben diesen<br />
Informationen entsprechen.<br />
(a) openPort()<br />
Diese Methode versucht einen PC-PORT zu öffnen. Wenn die Aktion erfolgreich abschließt,<br />
wird “der PC-PORT ist erfolgreich geöffnet” auf die Konsole geschrieben<br />
und TRUE als Rückgabewerte der Methode zurückgeliefert; ansonsten FALSE mit der Fehlermeldung<br />
“FEHLER: Portöffnung fehlgeschlagen”.<br />
Das Erzeugen einer File-Descriptor-Struktur vom Typ HANDLE (Windows API) wird für den<br />
seriellen Port und die auszuführenden Aktionen mittels CreateFile() konfiguriert.<br />
HANDLE CreateFile(<br />
LPCTSTR lpFileName, // pointer to name of the file<br />
DWORD dwDesiredAccess, // access (read-write) mode<br />
DWORD dwShareMode, // share mode<br />
LPSECURITY_ATTRIBUTES lpSecurityAttributes,<br />
// pointer to security attributes<br />
DWORD dwCreationDisposition, // how to create<br />
DWORD dwFlagsAndAttributes, // file attributes<br />
HANDLE hTemplateFile // handle to file with attributes to<br />
// copy<br />
);<br />
Parametererklärungen:<br />
lpFileName: ist ein Pointer auf einen leeren String, der von Objekten wie Datei, Pipe,<br />
Mailhost, Kommunikationsressourcen, Diskgeräte, Konsole oder Verzeichnisse spezifiziert<br />
wird. Für das Programm zeigt es auf Kommunikationsressourcen ( COM1 für die erste SIOS,<br />
COM2 für die zweite SIOS).<br />
6. Januar 2005 Seite 180