Daten über UART zum PC übertragen

Gast #2070075
Lesenswert?

Wie oben beschrieben wollte ich das nicht über ein Terminalprogramm 
machen sondern selber eine Konsolenanwendung schreiben.

Mein Problem ist jetzt, wie kann ich in C die serielle Schnittstelle 
ansprechen.
Gast #2070565
Lesenswert?

Hi,

hab mir mal einige Zeilen aus einem meiner Programme für XP. Sollte sich 
aber kaum was geändert haben. Einfach mal die MSDN nach den 
entsprechenden Funktionen und Datentypen durchsuchen.

Source ist nicht komplett, ein bisschen was musst Du noch selbst machen. 
;)
1
    //COM Port initialisieren
2
    DCB           dcb;
3
    HANDLE hCom = CreateFile ("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
4
    dcb.DCBlength = sizeof(DCB);
5
    GetCommState  (hCom, &dcb);
6
    dcb.BaudRate  = 9600;
7
    dcb.ByteSize  = 8;
8
    dcb.Parity    = NOPARITY;
9
    dcb.StopBits  = ONESTOPBIT;
10
    SetCommState (hCom, &dcb);
11
    DWORD iBytesReceived;
12

13
    ReadFile (hCom, nachricht, 25, &iBytesReceived, NULL);
14

15
    //COM Port schliessen
16
    CloseHandle (hCom);
Gast #2073394
Lesenswert?

Also ich programmier mit dem Borland C++ Builder, ist also kein VC++ 
spezifischer Code.
Könnte aber sein das Du den PDSK (Plattform Software Development Kit) 
brauchst, weil das alles Windows-Funktionen sind.
Die von Dir genannten Funktionen hören sich eher nach 
Netzwerkprogrammierung an und die serielle Schnittstelle hat mit 
Netzwerken nix zu tun.

Gruß

Ned
Gast #2073458
Lesenswert?

Schau mal in dein Compiler-Verzeichniss, unter: include oder so ähnlich.
Da sollten jede Menge .h Dateien drin sein, unter anderem auch eine 
"windows.h", "winbase.h" usw. Wenn die da drin sind, müsste es auch ohne 
PSDK gehen und zwar mit dem Code den ich oben gepostet habe.

Gruß

Ned
Gast #2073863
Lesenswert?

gggg schrieb:
> Mein Problem ist jetzt, wie kann ich in C die serielle Schnittstelle
> ansprechen.

Programmierst Du unter Windows oder Linux? Unter Windows schau Dich mal 
schlau mit dem Out-Befehl unter c und unter Linux brauchst Du nur ein 
Verzeichnis öffnen, dann bist du in der seriellen Schnittstelle drinnen, 
denn Unix/Linux ist ein verzeichnisbasiertes Betriebssystem derart, dass 
auch die Kommunikation mit Ports über die Verzeichnisstruktur erfolgt 
und nicht wie bei Dos/Windows über das Betriebssystem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren