PDA

Vollständige Version anzeigen : RS232 mit Visual Studio (C++)


tome28
16.05.2010, 09:53
G' Morgen,

ich versuche Daten via RS232 zu senden und zu empfangen. Ich habe mich schon ganz gut durch das Netz und die "unglaublich hilfreiche" Microsoft - Hilfe gearbeitet. Dennoch habe ich zwei Fragen. Hier erstmal ein Auszug meines Quelltext :

using namespace System::IO::Ports;
.
.
.
SerialPort Serial;
.
.
.
Serial.PortName = "COM3";
Serial.BaudRate = 9600;
// Serial.Parity = None;
Serial.DataBits = 8;
// Serial.StopBits.One;
// Serial.Handshake = 0;
Serial.ReadTimeout = 500;
Serial.WriteTimeout = 500;

Serial.Open();
if (Serial.IsOpen)
{
Serial.Write("Hallo");
Serial.Close();
}

Frage 1 : Dem geübten Leser wird nicht entgehen, dass bei den Einstellungen die "Parität, das Stoppbit und das Handshake" auskommentiert sind. Kann mir vielleicht jemand verraten welche Datentypen ich da nutzen muss? Hierzu konnte mir die Hilfe von MS gar nicht helfen.

Frage 2 : Wie kann ich überprüfen, ob die Verbindung erfolgreich ist oder nicht? Den Weg den ich versuche (mit Serial.IsOpen) geht es nämlich nicht.

Vielen Dank im voraus


lg Torsten

nopes
07.06.2010, 14:45
Hallo Torsten,

wegen der Parität, siehe hier: http://msdn.microsoft.com/en-us/library/system.io.ports.parity%28v=VS.100%29.aspx?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.IO.PORTS.SERIALPORT%29;k%28DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FOR MDOCUMENTDESIGNER%29;k%28NONVISUALSELECTION%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK&k=VERSION=V4.0%22%29&rd=true.
Wegen des Handshales, siehe hier: http://msdn.microsoft.com/en-us/library/system.io.ports.handshake%28v=VS.100%29.aspx?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.IO.PORTS.SERIALPORT%29;k%28DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FOR MDOCUMENTDESIGNER%29;k%28NONVISUALSELECTION%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK&k=VERSION=V4.0%22%29&rd=true
Und zu guter letzt die Stopbits: http://msdn.microsoft.com/en-us/library/system.io.ports.stopbits(v=VS.100).aspx?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.IO.PORTS.SERIALPORT);k(DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FORMDOCUM ENTDESIGNER);k(NONVISUALSELECTION);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&k=VERSION=V4.0%22)&rd=true

Komplette Doku ist hier: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport_members(v=VS.100).aspx?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.IO.PORTS.SERIALPORT);k(DESIGNER_SYSTEM.WINDOWS.FORMS.DESIGN.FORMDOCUM ENTDESIGNER);k(NONVISUALSELECTION);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&k=VERSION=V4.0%22)&rd=true (Ganz ohne Ironie, die MS-Dokus sind eigentlich immer die besten).

Wegen des Status, da ist IsOpen der richtige Weg, das wird allerdings benutzt bevor der Port in der Anwendung benutzt wird, also bevor ein open() aufgerufen wird, um zu prüfen ob der Port überhaupt benutzt werden könnte...