Forum: PC-Programmierung Serielle Schnittstelle in C ansprechen


von Christian (Gast)


Lesenswert?

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

von Rahul (Gast)


Lesenswert?

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

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

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

von Blackbird (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.