est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra
est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra
est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Projektarbeit 2002, BKIK 2/1<br />
<strong>David</strong> <strong>Zaadstra</strong>, Alexander Fuchs<br />
<strong>Bewegung</strong> <strong>durch</strong> <strong>eine</strong> <strong>3D</strong>-<strong>Landschaft</strong> <strong>mit</strong> Fernbedienung<br />
Elektronikschule Tettnang<br />
6. Kommunikation Mikrokontroller -> PC<br />
6.1 Empfang der Daten <strong>mit</strong> den Communications-Funktionen der Win32-API<br />
Das Win32 API der Microsoft Windows Betriebssysteme stellt unter dem Bereich<br />
„Communications“ Funktionen zur Verfügung, die es ermöglichen, Daten über die seriellen<br />
Schnittstellen auszutauschen.<br />
Die Kommunikation zu <strong>eine</strong>r der seriellen Schnittstellen wird über die Funktion<br />
CreateFile aufgebaut. Die Schnittstelle wird also wie <strong>eine</strong> Datei angesprochen.<br />
Der Unterschied liegt nur in den Parametern, die bei der Initialisierung übergeben werden.<br />
Will man zum Beispiel COM1 ansprechen, sieht die Initialisierung so aus:<br />
CODE:<br />
DCB dcb;<br />
HANDLE com;<br />
DWORD error;<br />
BOOL success;<br />
com = CreateFile(<br />
"COM1",<br />
// Kontrollstruktur für die serielle Schnittstelle<br />
// Handle der Schnittstelle<br />
// für zurückgegebene Fehlercodes<br />
// COM1 öffnen<br />
GENERIC_READ |<br />
GENERIC_WRITE,<br />
// lesen und schreiben<br />
0, // exklusiver Zugriff<br />
NULL,<br />
OPEN_EXISTING,<br />
// k<strong>eine</strong> Sicherheitsattribute<br />
// muss bei der seriellen Schnittstelle<br />
// verwendet werden<br />
0, // kein asynchroner Zugriff<br />
);<br />
NULL<br />
// muss bei der seriellen Schnittstelle<br />
// verwendet werden<br />
// Ist das zurückgegebene Handle gültig?<br />
if (com == INVALID_HANDLE_VALUE)<br />
{<br />
error = GetLastError(); //Fehlercode holen<br />
// hier Fehlerbehandlung einfügen<br />
}<br />
- 46 -