RS 232 mittels C ansprechen
-
Hallo zusammen!
ich muss ein Programm in c realisieren, das daten(text) über die RS 232 schnittstelle übertragen, kann mir jemand helfen, ich brauche das sehr dringend
also konkret ist meine frage, wie kann ich rs 232 in c ansprechen und daten drauf schreiben?Danke im voraus
-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp
Da du das Betriebsystem nicht angegeben hast, nehme ich an, dass du Windows benutzt.
Btw, den Link habe ich in google nach c.a. 1 Minute gehabt. Nix für ungut.
-
Danke fürs Antwort!
-
Hier ein paar Codeausrisse für Windows, damit findest die entsprechenden Routinen sicher im Help
// Herstellen der seriellen Kommunication über Win32 #define NORMSTRINGLEN 128+1 #define PASS 0 int CreateSerialConnection(HANDLE *hCom,char *pcComPort ) {// Öffnen des Commports DCB Dcb; BOOL fSuccess; COMMTIMEOUTS CommTimeouts; char Text[NORMSTRINGLEN]; *hCom = CreateFile(pcComPort, GENERIC_READ | GENERIC_WRITE, 0, // comm devices must be opened w/exclusive-access NULL, // no security attributes OPEN_EXISTING, // comm devices must use OPEN_EXISTING 0, // not overlapped I/O NULL // hTemplate must be NULL for comm devices ); if (*hCom == INVALID_HANDLE_VALUE) { // Handle the error. printf("Cannot connect to serial Port %s\n Please check connection or reconfigure\n"); return (1); } fSuccess = SetupComm(*hCom,16000,16000); if (!fSuccess) { // Handle the error. printf( "GetCommState failed with error %d.\n", GetLastError()); return (2); } fSuccess = GetCommState(*hCom,&Dcb); // Configure Comport if (!fSuccess) { // Handle the error. printf(Text,"GetCommState failed with error %d.\n", GetLastError()); return (3); } // Fill in the DCB: baud=9,600 bps, 8 data bits, no parity, and 1 stop bit. Dcb.BaudRate = CBR_9600; //CBR_9600; // set the baud rate Dcb.ByteSize = 8; // data size, xmit, and rcv Dcb.Parity = NOPARITY; // no parity bit Dcb.StopBits = ONESTOPBIT; // one stop bit Dcb.fRtsControl=RTS_CONTROL_DISABLE; // RTS OFF RDI Interface Dcb.fDtrControl=DTR_CONTROL_DISABLE; // DTR OFF nicht CALMODE fSuccess = SetCommState(*hCom, &Dcb); if (!fSuccess) { printf(Text,"SetCommState failed with error %d.\n", GetLastError()); return (4); } // SetBaud(hCom,SerBaud); GetCommTimeouts(*hCom,&CommTimeouts); CommTimeouts.ReadIntervalTimeout=200; CommTimeouts.ReadTotalTimeoutMultiplier=5; CommTimeouts.ReadTotalTimeoutConstant=1000; CommTimeouts.WriteTotalTimeoutConstant=0; CommTimeouts.WriteTotalTimeoutMultiplier=0; SetCommTimeouts(*hCom,&CommTimeouts); printf(Text,"Connected to %s",pcComPort); return PASS; } CloseHandle(*hCom); bErr = PurgeComm(hLane4800, PURGE_RXCLEAR); if (!bErr) { // Handle the error. printf("PurgeComm failed with error %d.\n", GetLastError()); return 5; } bErr =ReadFile(hLane4800,InBuff,1,&count,NULL); // Krieg die Daten if((0!=bErr) && (count > 0)) { DataIn[StringCount]=InBuff[0]; }
-
http://msdn.microsoft.com/en-us/library/ms810467.aspx
here the exampels:
http://msdn.microsoft.com/en-us/library/bb540534(VS.85).aspx
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die serielle Schnittstelle ist nicht so einfach, wie es aussieht...
Verwende eine fertige Bibliothek:
Siehe codeproject.com da gibt es 1/2 gute...
-
-
Die serielle Schnittstelle ist nicht so einfach, wie es aussieht...
Sag mal ein paar Sachen die daran schwierig sein sollen...
-
baud schrieb:
Die serielle Schnittstelle ist nicht so einfach, wie es aussieht...
Sag mal ein paar Sachen die daran schwierig sein sollen...
Lies mal den Abschnitt: Why is serial communication that hard
http://www.codeproject.com/KB/system/serial.aspx
-
theta schrieb:
Das ist auch die Klasse, die ich gemeint habe