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.