Hallo zusammen, Folgendes Problem: Habe eine Routine zum Versenden und Empfangen von Daten mit einer RS232 Schnittstelle an einem COM-Anschluss welche wie folgt aussieht: 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 WriteFile (hCom, &ucMsg, sizeof (ucMsg), &iBytesWritten, NULL); // Senden von 4 Bytes // oder: //WriteFile (hCom, &ucMsg, 1, &iBytesWritten, NULL); // Senden eines Bytes CloseHandle (hCom); // COM1 schließen return (0); } Muß ich falls ich öffters was verschicke das CreateFile und ClosHandle Ausführen oder kann ich es einmal aufrufen und mehrmals durch WriteFile und ReadFile Daten Senden und Empfangen und ganz am Schluss des Progrmms das CLOSE Handle Ausführen? David
> Muß ich falls ich öffters was verschicke das CreateFile > und ClosHandle Ausführen oder kann ich es einmal aufrufen > und mehrmals durch WriteFile und ReadFile Daten Senden und > Empfangen und ganz am Schluss des Progrmms > das CLOSE Handle Ausführen? Das solltest Du sogar so machen. Einmal die Schnittstelle aufmachen, den Rückgabewert von CreateFile überprüfen (das hast Du in Deinem Codebeispiel vergessen), solange und so oft schreiben / lesen wie erforderlich oder Spaß macht am Ende die Schnittstelle mit CloseHandle wieder schließen.
Ok Ist es möglich über 20 minuten einen Datenaustasuch auf dieser Schnittstelle und diesem Code zu haben. Habe ein kleines Projekt auf welchem Mikrocontroller dauernd Daten zum Pc Senden. Das geht fast ununterbrochen über 20 minuten. Dise Daten werden dann abgespeichert in einem Zahlenfeld und später einer Datei. Kann es Probleme bei so einem langanhaltendem Datenaustausch geben? David
Nö, sofern das Programm nicht irgendwelche schweren Fehler (Speicherlecks o.ä.) enthält, kann so etwas auch über mehrere Monate im Dauerbetrieb laufen - halt solange, wie das verwendete Windows-System und die verwendete Hardware durchhält.
Danke für die Tipps. Bin jetzt beruigter, daß mein Projekt vielleicht doch nicht auf so wackligen Beinen steht :-). Gibt es auch Routinen welche der obigen ähneln und sich für USB eigenen? David
> Gibt es auch Routinen welche der obigen ähneln und sich für USB
eigenen?
Naja, nicht so ohne weiteres. Da brauchst du externe Hardware. Das
einfachste ist sicherlich ein USB->Seriall Wandler, wie z.B. der FT232
von FTDI. Den kannst du ganz normal wie einen COM benutzen.
Ich habe hier einige der USB -> 3,3V UART Kabel im Einsatz, bin echt
begeistert.
Hallo. Ich hätte nochmal eine Frage zu dieser RS232 Schnittstelle am COM durch welche man mit der obigen routine Daten versenden kann. Wenn ich Daten mit dem Readfile befehl empfange, und das COM Port nicht schliese und wieder neue Daten mit Readfile empfagne kann es dann zu fehlern kommen, bzw muß ich das Zahlenfeld in welches Readfile schreib vorher löschen? David
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.