Vom RS232 Port Daten empfangen
-
Hallo,
ich möchte mit einem kleinem Konsolenprogramm zwischen zwei Rechnern Daten über die RS232 Schnittstelle schicken. Ich habe eine fertiges Programm für die RS232 Kommunikation benutzt. Das Programm soll auf beiden Rechnern zeitgleich laufen und miteinander kommunizieren. Ich habe als ersten Test die Daten von einem Terminal empfangen, was problemlos funktionert. Wenn ich aber mit dem Konsolenprogramm die vorher verschickten Daten auslesen möchte, funktioniert es nicht (Es werden 0 Bytes gelesen).
Ist es für die Kommunikation nötig, dass der Port zeitgleich auf beiden Rechner geöffnet ist?
Wo werden die Daten zwischengespeichert wenn am anderen Rechner kein Port offen ist?Codeausschnitt zum Lesen des RS232:
int readSerial(char message[]) { Serial serial; serial.open(1, 9600, 8, 0, 1); int bytes = serial.read(&message[0], 100, false); serial.close(); return bytes; }Codeausschnitt der RS232 Bibliothek:
int Serial::read(void* buffer, int buffLen, bool nullTerminate) { DWORD numRead=0; //if(nullTerminate) //{ // --buffLen; //} BOOL ret = ReadFile(commHandle, buffer, buffLen, &numRead, NULL); if(!ret) { return 0; } //if(nullTerminate) //{ // buffer[numRead] = '\0'; //} return numRead; }Der Code der RS232 Bibliothek stammt nicht von mir.
Vielen Dank für jede Hilfe
-
Ist es für die Kommunikation nötig, dass der Port zeitgleich auf beiden Rechner geöffnet ist?
Jupp.
Wo werden die Daten zwischengespeichert wenn am anderen Rechner kein Port offen ist?
Nirgends. -> Nirvana.
-
Wie läuft eine Kommunikation dann ab?
Ich stelle es mir so vor, dass ich im Hauptprogramm auf beiden Rechnern den Port öffne und dann schreiben und lesen kann. Wenn ich etwas schreibe, werden die Daten doch sicherlich irgendwo zwischengespeichert, damit ich mit einem anschliessenden Lesebefehl die Daten auslesen kann, oder nicht?
Sind die Daten dann nur solange vorhanden, bis der Port wieder geschlossen wird?
-
Wenn die Verbindung steht, also auf beiden Seiten der "Port offen" ist kannst Du kommunizieren (bei Bedarf werden die Daten von HW/OS gepuffert).
"Port" weg -> (noch nicht versendete/empfangene) Daten weg.
-
Ok, habs begriffen, danke für die Antwort.
Wenn ich den Port im Hauptprogramm geöffnet lasse, klappt die Kommunikation jetzt auch.