mikrocontroller.net

Forum: PC-Programmierung Serielle Schnittstelle in C ansprechen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Serielle wird unter C IMHO als Datenstrom wie eine Datei behandelt.
Vielleicht hilft das hier:
http://www.programmersheaven.com/zone7/articles/ar...
http://www.programmersheaven.com/zone3/articles/ar...

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Blackbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE für eure Postings !!!!
Dies hat mir echt weiter geholfen ;-)))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.