Hallo zusammen! Ich habe eine Frage: Wie kann ich in C++ dem PC sagen das er einen Port öffnen bzw. wieder schließen soll? Über google habe ich nur den Befehl mit öffnen der Com Ports gefunden:
int portnr_c = 1;
Ich möchte aber diesen auch wieder schließen können.
Grüßle
Philipp
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
Wie kann ich dann Texte auf den Port senden und auf den anderen PC ausgeben?
Sprechen wir mal nicht von Texten. Transportieren wir erst einmal ein Zeichen. Und gemeint ist natürlich nicht irgendein Port sondern eine RS-232-Schnittstelle, richtig?
Im Prinzip ganz einfach: Die beide serielle Schnittstellen (sendende und empfangende) müssen auf dieselben Parameter (Baudrate, Start-, Stoppbits, Parity etc.) eingestellt werden. Beim Sender schreibt man das Byte dann eine I/O-Adresse. Den Rest macht der Treiberbaustein. Das Empfangen ist ein wenig schwieriger, da der Treiberbaustein einen Interrupt auslöst, wenn er ein Zeichen empfangen hat. Also schreibt man eine Interrupt-Service-Routine, die das Zeichen weiterverarbeitet. Für eine Folge von Zeichen (einen Text) bietet es sich an, ein Protokoll zu vereinbaren, um Rückmeldungen zu geben, wenn mal etwas nicht geklappt hat usw. Übliche Protokolle sind X-Modem, Y-Modem und Z-Modem, wobei letzteres das Leistungsfähigste ist.
Bestimmt gibt es auch irgendwo im Netz fertige Programme, die so etwas tun, oder Codebeispiele.
Ich meine Windows müsste doch so eine Freigabe für den Zugriff geben?
Wie Windows (XP) es bei einem DOS-Programm behandelt, weiß ich nicht genau, nur soviel: Der DOS-Anwendung werden virtuelle Schnittstellen zugeordnet. Bei einem Zugriff werden die Daten zwischen physikalischer und virtueller Schnittstelle ausgetauscht. Das alles erledigt die NTVDM.
Ich weiß ja nicht, was du vorhast. Aber wenn du Daten zwischen zwei PCs austauschen willst, dann gibt es effizientere Methoden als über die SIO. Außerdem gibt es schon eine fertige Lösungen im Windows (Stichwort: Nullmodemkabel). Und noch was: Wenn man von Programmieren wenig bis keine Ahnung hat, dann ist das Implementieren einer seriellen Datenübertragung schon ein ziemlicher Brocken.
Claus
Sprechen wir mal nicht von Texten. Transportieren wir erst einmal ein Zeichen. Und gemeint ist natürlich nicht irgendein Port sondern eine RS-232-Schnittstelle, richtig?
Im Prinzip ganz einfach: Die beide serielle Schnittstellen (sendende und empfangende) müssen auf dieselben Parameter (Baudrate, Start-, Stoppbits, Parity etc.) eingestellt werden. Beim Sender schreibt man das Byte dann eine I/O-Adresse. Den Rest macht der Treiberbaustein. Das Empfangen ist ein wenig schwieriger, da der Treiberbaustein einen Interrupt auslöst, wenn er ein Zeichen empfangen hat. Also schreibt man eine Interrupt-Service-Routine, die das Zeichen weiterverarbeitet. Für eine Folge von Zeichen (einen Text) bietet es sich an, ein Protokoll zu vereinbaren, um Rückmeldungen zu geben, wenn mal etwas nicht geklappt hat usw. Übliche Protokolle sind X-Modem, Y-Modem und Z-Modem, wobei letzteres das Leistungsfähigste ist.
Bestimmt gibt es auch irgendwo im Netz fertige Programme, die so etwas tun, oder Codebeispiele.
Ich meine Windows müsste doch so eine Freigabe für den Zugriff geben?
Wie Windows (XP) es bei einem DOS-Programm behandelt, weiß ich nicht genau, nur soviel: Der DOS-Anwendung werden virtuelle Schnittstellen zugeordnet. Bei einem Zugriff werden die Daten zwischen physikalischer und virtueller Schnittstelle ausgetauscht. Das alles erledigt die NTVDM.
Ich weiß ja nicht, was du vorhast. Aber wenn du Daten zwischen zwei PCs austauschen willst, dann gibt es effizientere Methoden als über die SIO. Außerdem gibt es schon eine fertige Lösungen im Windows (Stichwort: Nullmodemkabel). Und noch was: Wenn man von Programmieren wenig bis keine Ahnung hat, dann ist das Implementieren einer seriellen Datenübertragung schon ein ziemlicher Brocken.
Claus