Hallo, wie kann man die serielle Schnittstelle in C unter WinXP ansprechen ? Ich habe schon gesucht und gesucht aber nichts passendes gefunden. Es heistt ja immer, das man mit seinem Programm selbst keinen direkten Zufriff auf die serielle Schnittstelle bekommt. Aber irgendwie muss es doch machbar sein .... Ich möchte z.B. irgendein Zeichen ausgeben und dieses über einen angeschlossenen Microcontroller auf einem Display ausegben. Der Microcontroller funktioniert berreits, aber wie mache ich das in C ??!!?? Viele Grüße Christian
Die Serielle wird unter C IMHO als Datenstrom wie eine Datei behandelt. Vielleicht hilft das hier: http://www.programmersheaven.com/zone7/articles/article323.htm http://www.programmersheaven.com/zone3/articles/article442.htm
Die WinAPI ist doch C. Also sollte man die ganz normalen CreateFile, WriteFile usw Routinen verwenden können. Mit diesen beiden Stichworten solltest du die entsprechenden Infos finden können. Eine gute Vorlage (bis auf die Klassen genau das richtige) http://www.iftools.com/ctb.en.html
Wenn es nur um das Senden geht: // DOS32-Programm zum Senden eines Bytes über COM1 (9600-8N1) // OS: W95, W98, W98SE, WinME, WinNT, Win2000, WinXP // Note: Keine Fehlerbehandlung implementiert! #include <windows.h> int main (void) { DCB dcb; DWORD iBytesWritten; unsigned char ucMsg[] = {0x41, 0x42, 0x20, 0x43}; // (4) //unsigned char ucMsg = 'C'; // zu sendendes Zeichen (1) HANDLE hCom = CreateFile ("COM1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); dcb.DCBlength = sizeof(DCB); // Laenge des Blockes MUSS gesetzt sein! GetCommState (hCom, &dcb); // COM-Einstellungen holen und aendern dcb.BaudRate = 9600; // Baudrate dcb.ByteSize = 8; // Datenbits dcb.Parity = NOPARITY; // Parität dcb.StopBits = ONESTOPBIT; // Stopbits SetCommState (hCom, &dcb); // COM-Einstellungen speichern //WriteFile (hCom, &ucMsg, 4, &iBytesWritten, NULL); // Senden von 4 Bytes // oder: WriteFile (hCom, &ucMsg, sizeof (ucMsg), &iBytesWritten, NULL); // Senden von 4 Bytes //WriteFile (hCom, &ucMsg, 1, &iBytesWritten, NULL); // Senden eines Bytes CloseHandle (hCom); // COM1 schließen return (0); } Empfangen von seriellen Daten ist aber auch nicht sooo schwierig zu programmieren. Blackbird
DANKE für eure Postings !!!! Dies hat mir echt weiter geholfen ;-)))
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.