Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
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