Forum: PC-Programmierung RS232 in VB.NET


von Tabaluga (Gast)


Lesenswert?

hallo zusammen!

also ich bin schon den ganzen tag am stöbern im internet und komme
nicht weiter. ich will, wie so viele. den com-port aus visual basic.net
ansprechen. ich bin schon so weit, dass ich es mit der Windows API
versucht habe.
anleitung unter
http://www.microsoft.com/germany/msdn/library/net/vbnet/SerielleSchnittstelleMitVBNETAnsprechen.mspx

mein problem ist allerdings, das ich beim importieren der
dll-funktionen folgende gehlermeldungen auftauchen:

 - Der Typ DCB ist nicht definiert
 - Der Typ COMMTIMEOUTS ist nicht definiert
 - Der Typ OVERLAPPED ist nicht definiert

was muss ich da machen? im tutorial steht nichts weiter dazu :-(

hoffe mir kann jemand helfen
Tabi

von Tabaluga (Gast)


Lesenswert?

also ich habe einen Code gefunden, den ich einbinden kann:
http://spotlight.de/nzforen/amvb/m/amvb-1114334700-32022.html

allerdings bekomme ich immer einen Fehler, wenn ich den Port öffnen
will.
Der Code dazu:
        Dim moRS232 As New Rs232()
        Try
            With moRS232
                .Port = 2
                .BaudRate = 9600
                .DataBit = 8
                .StopBit = Rs232.DataStopBit.StopBit_1
                .Parity = Rs232.DataParity.Parity_None
                .Timeout = 500
            End With

            moRS232.Open()

        Catch ex As Exception
            Console.WriteLine(ex.Message & ex.StackTrace)
            Console.WriteLine("ISOPEN:" & moRS232.IsOpen.ToString())

        End Try

Was merkürdig ist, dass der Port aber offen ist. Es lässt sich nur der
ComStatus nicht richtig einstellen.

Weiß da jemand was zu?

von Wolfram (Gast)


Lesenswert?

Hallo Tabaluga,

Du solltest den MSDN Artikel bis zum Ende durchlesen. Da steht alles
drin, auch die Deklaration von DCB und COMMTIMEOUTS.

CU Wolfram

von Tabaluga (Gast)


Lesenswert?

Ja, das hab ich auch schon entdeckt. Ich bin in der Programmiersprache
noch etwas neu und unerfahren...

Ich hab den Code jetzt soweit aufgebeut, aber immer wenn ich den Port
öffnen will, wird eine Exeption geschmissen von SetCommState(...) in
der Open() methode.
Ich habe den Code von
http://spotlight.de/nzforen/amvb/m/amvb-1114334700-32022.html genommen
und mit dem von MSDN verglichen. Ist nahezu identisch, nur andere
Bezeichnungen und einige Exeption-Abfragen mehr.

Kann mir da jemand helfen, bzw. wo bekomme ich genauer Informationen
her, wie ich mit SetCommState(...) genau umgehe und welche
Rückgabewerte diese Funktion zurück liefert?

Hoffe ich bekomme den COM-Port endlich mal zum laufen...

Tabi

von Wolfram (Gast)


Lesenswert?

Schau mal nach was dir CreateFile zurückliefert. Das muss ungleich -1
sein sonst ging der Port nicht auf und du kannst den Rest vergessen.
probier mal ein WriteFile danach und schau dir den Rückgabewert und die
geschriebenen Bytes an.
Die Beschreibungen sämtlicher Funktionen mit Rückgabewerten findest du
in der MSDN. Da solltest du den Filter für Visualbasic rausnehmen ;-)
Es sind windows32 API funktionen die gewöhnlich aus C aufgerufen
werden.
Hier im Forum gibt es einige Anfragen dazu. Wenn du sie verwendest
solltest du sehr genau verstanden haben was du tust. Da du schreibst
das du noch etwas neu in der Programmiersprache bist, schau mal in ein
etwas dickeres Visual Basic Buch rein Kapitel Windows
Systemprogrammierung.
Solltest du die serielle Schnittstelleprogrammierung nicht verstehen
wollen, sondern sie nur nutzen wollen, so solltest du dir eher die
Threads im Forum zu serielle Schnittstelle und C# anschauen. Da findest
du mit Sicherheit ein Object was dir die ganzen Probleme vom Hals hält
und dich schneller zum Ziel bringt. Wenn du Probleme haben solltest den
C# Code zu lesen, die Entwicklungsumgebung SharpDevelop bietet eine
Konvertierung von VB zu C# und andersrum.

CU Wolfram

von Roland S. (rschmidlin)


Lesenswert?

Hallo Tabaluga,

schau mal unter: www.codeworks.it/net/index.htm
Hier wird auch eine komplette VB.NET-Klasse für den Zugriff auf die
serielle Schnittstelle angeboten. Soweit ich das überblickt habe (ich
hab eigentlich fast keine Ahnung von VB, sondern arbeite normalerweise
mit C-Sprachen), ist die echt sauber und umfangreich programmiert und
wird wohl auch permanent weiterentwickelt.

Als Alternative kannst Du Dir mal die .NET Framework 2.0 Beta
anschauen. Bei Microsoft gibts auch schon die Visual Basic 2005 Express
Edition Beta unter http://lab.msdn.microsoft.com/express/ zum download.
Unter .NET 2.0 gibt es mittlerweile die Klasse
System.IO.Ports.SerialPort, die den Zugriff auf den COM-Port kapselt.

Gruß Roland

von Tabaluga (Gast)


Lesenswert?

Super! Danke für eure Antworten. Jetzt hab ich mal ne Vorlage, die
hoffentlich auch funktioniert. Ich werde mir das mal die Tage angucken.
Habe grad nicht all zu viel Zeit dafür :-(

Aber gaanz vielen Dank an euch beiden!!!

Taib :-)

von antonio (Gast)


Lesenswert?

HALLO Tabaluga

ich versuche Längst mit VB 6.0 die comport zu öffnen immer erfolglos ich 
habe mehrere code by Microsoft.com probiert aber er taucht immer ein 
laufzeitfehler. du hast vermutlich die sache schon hingekriegt. bitte 
kannst du deine beispiele code an dieser Mail adresse 
(botchakbrice@yahoo.fr) schicken.

Danke

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
Noch kein Account? Hier anmelden.