-
-
Erfahrener Benutzer
Roboter-Spezialist
Prinzipiell hat man zwei Probleme:
1) Pins am Comport müssen bitweise angesprochen werden
2) Um das Programm nicht immer die Pins abfragen zu müssen wird ein bzw. mehrere Interrupts benötigt.
zu1)
Es gibt an dem Port nichtnur Datenbits, sondern auch Statusleitungen (RTS, CTS, DTR, ..) Diese können einzeln angesproche/gesetztn werden und
zu2) sie besitzen die Möglichkeit Interrupts auszulösen.
Das Setzen eines Bits geschieht mit EscapeCommFunction ( http://msdn.microsoft.com/library/en...asp?frame=true ).
Du solltest mit SetCommMask ( http://msdn.microsoft.com/library/en...asp?frame=true ) festlegen, auf welche Events reagiert werden soll, desweiteren solltest du dir in deinem Programm einen Thread erzeugen, der immer wieder auf ein WaitCommEvent ( http://msdn.microsoft.com/library/en...asp?frame=true ) aufläuft. Diese Funktion wartet darauf, dass die in LPDWORD lpEvtMask festgelegten Interrupts/Events auftreten.
Kehrt die Funktion mit true zurück musst du prüfen, welches der Events aufgetreten ist (leider). Dies geschieht mit GetCommModemStatus ( http://msdn.microsoft.com/library/en...asp?frame=true ).
Danach vergleichst du beim Auftreten eines Events die beiden Leitungen miteinander und wertest dies aus.
Siehe auch ( http://www.eseo.de/i2c.htm )
Start Condition = SDA(high->low)&&SCL(high)
Data = (SDA(high->low)||SDA(low->high))&&SCL(low)
Stop Condition = SDA(low->high)&&SCL(high)
Eine Übersicht über die ComApi-Funktionen findest du hier:
http://msdn.microsoft.com/library/en...asp?frame=true
Hoffe ich konnte helfen.
Gruss
Michael
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen