14.11.2012 Aufrufe

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />

int CSiosCom::inputDigit(int port)<br />

{<br />

writeOnport(0xD3);<br />

writeOnport(port);<br />

return readOnportSens();<br />

}<br />

4. Übertragung der Kollisionseffekte und der Windsimulation in die virtuelle Welt<br />

Diese zwei Aktionen sind auf die Schnittstelle durch die Methode Setdigitoutput simuliert,<br />

die als Übergabeparameter eine Digitalausgabe erwartete. Sobald sie von einem digitalen Ausgabeport<br />

aufgerufen werden, erzeugt sie mittels writeOnport() einen Ausgabestrom an diesem<br />

Port auf die SIOS. Aber dafür sendet sie an den Port den Befehl 0x51, der den Zugriff auf die<br />

Digitalausgänge erlaubt.<br />

void CSiosCom::setDigitOutput(int siosOutPort)<br />

{<br />

writeOnport(0x51);<br />

writeOnport(siosOutPort);<br />

}<br />

Mit allen diesen Methoden ist es möglich, über die Schnittselle auf die SIOS zuzugreifen, und mit allen<br />

Komponenten, die angeschlossen sind, Informationen auszutauschen. Aber die Schnittstelle konnte<br />

nicht die Koordinationen der Kollisionen aus der virtuellen Welt auf die Plattform simulieren oder<br />

den Teppich steuern. Um diese Probleme zu lösen, wurden zwei Komponenten SensorikInput und<br />

CollisionPlugin geschrieben, welche die Fähigkeiten der Schnittstelle nutzen.<br />

SensorikInput In dieser Komponente werden die Informationen über den aktuellen Winkel der<br />

Plattform und die Geschwindigkeitsschalter verwendet, um das aktuelle Verhalten des Virtuellen Teppichs<br />

zu definieren und weiter an die Engine zu leiten. Dies wird erfolgreich durch die Methoden<br />

updateAcceleration, updateInput, init und calculateOrientation realisiert.<br />

1. init()<br />

Mit dieser Methode wird die SIOS-Schnittsetlle für den Informationsaustausch geöffnet. Damit<br />

können andere Komponenten auf die Informationen der an der SIOS angeschlossenen Komponenten<br />

zugreifen.<br />

bool CSensorikInput::init()<br />

{<br />

bool rval = m_Sios.openPort("COM1");<br />

if( !rval ) return false;<br />

rval = m_Sios.setConfigurationPort(19200,8,TRUE,NOPARITY,TWOSTOPBITS);<br />

if( !rval ) return false;<br />

rval = m_Sios.setCommunicationTimeout(MAXDWORD,0,0,0,0); // Timeout setzen<br />

if( !rval ) return false;<br />

return true;<br />

}<br />

2. updateInput()<br />

Diese Methode muß von jedem PlugIn, welches von IInput ableitet, implementiert werden,<br />

und es sorgte dafür, dass ein neues Event des aktuellen Plattformzustands für die Engine in der<br />

event_list eingehängt wird. Dabei wird die Methode calculateOrientation() aufgerufen,<br />

die das neue Event erzeugt.<br />

6. Januar 2005 Seite 187

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!