www.mikrocontroller.net

Forum: PC-Programmierung RS232 in VB.NET


Autor: Tabaluga (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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

Autor: Tabaluga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich habe einen Code gefunden, den ich einbinden kann:
http://spotlight.de/nzforen/amvb/m/amvb-1114334700...

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?

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tabaluga (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... 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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Schmidlin (rschmidlin)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tabaluga (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: antonio (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.