Forum: PC-Programmierung Hilfe! VB 2010 Express


von Maxi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich weiß, dass da hier eigentlich nicht der richtige Platz für Visual 
Basic ist. Es sei gesagt: Ich bin ein Absoluter Newbie im Umgang mit 
Microsoft Visual Basic 2010 Express.

Mein Ziel ist es, über COM1 ein einfaches "e" zu senden. Nach Tutorials 
in Internet ist dies alles kein Problem, bei mir stellt es das 
allerdings dar. In Sämtlichen Tutorials wird die Serielle Schnitstelle 
mit "SerialPort1." angesteuert.

Bei mir funktioniert das leider nicht und im ErrorLog wird die Meldung 
"Fehler 2 "SerialPort1" wurde nicht deklariert. Auf das Objekt kann 
aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden." 
ausgeworfen.

Der Befehl "SerialPort" wird vom Ediotor allerdings erkannt und besitzt 
Eigenschaften und Methoden wie "BaudRate","Open" oder "Close".

Kann mir jemand Weiterhelfen und Tips geben, wie ich das zum laufen 
bekomme ? Wäre euch sehr Dankbar!

Gruß
Maximilian

: Verschoben durch User
von Peter II (Gast)


Lesenswert?

du musst ja estmal ein Objekt vom Type SerialPort anleigen. In C# macht 
man es mit.

SerialPort SerialPort1 = new SerialPort("Com1");

so jetzt muss du es nur noch nach VB übersetzen.

von Brater (Gast)


Lesenswert?

@Peter II: oder einfach auf CIL ;)

Du musst das Objekt natürlich vorher anlegen mit Dim

Als Empfehlung: nimm kein VB. Die Sprache ist absolut Müll. Ich habe in 
der MSDN Code-Schnipsel gesehen, bei der das VB fast zu C# wechselte, 
weil es nicht mehr mit VB beschrieben werden konnte.

von Michael (Gast)


Lesenswert?

Ziehs dir halt aus der Toolbox rein. Du hast das Objekt SerialPort noch 
garnicht in die Form gezogen.

Hier wie es geht: http://www.youtube.com/watch?v=wsMMHaSvvRU&t=292

Brater schrieb:
> Als Empfehlung: nimm kein VB. Die Sprache ist absolut Müll. Ich habe in
> der MSDN Code-Schnipsel gesehen, bei der das VB fast zu C# wechselte,
> weil es nicht mehr mit VB beschrieben werden konnte.

Das Problem ist, dass die wenigsten gut programmieren können. Die 
meisten machen Klick n' Run. Das führt immer zu graussamen Programmen. 
Objektorientiertheit ist nicht jeder man Sache.

Zu deinem Kommentar - das ist natürlich völliger Blödsinn. C# und VB.net 
sind mit Ausnahme des Syntax absolut gleichwertig. Es gibt jede Struktur 
vom Point bis zum Mashall in beiden Sprachen. Es gibt sogar 
Onlineübersetzer. Das ist 1:1 das gleiche. Ein anderer Syntax und fertig 
ist die andere Sprache.

von Brater (Gast)


Lesenswert?

Michael schrieb:
> Das Problem ist, dass die wenigsten gut programmieren können

Hmpf... ja. Kann an einer Allergie durch mehrjährige VBA-Programmierung 
liegen (wobei ich heute statt VBA lieber gleich ein Office-Addin in VS 
programmieren würde). Und dabei ist C# schon sehr sicher im Vergleich zu 
nativen C/C++.

Michael schrieb:
> Es gibt sogar
> Onlineübersetzer.
Das kannte ich noch gar nicht aber interessant, dass es sowas gibt. 
Wieder was gelernt...

Michael schrieb:
> Das ist 1:1 das gleiche.

Auf CIL-Ebene kannte ich das. Allerdings ist das ja eine Ebene tiefer 
(in Richtung ASM).

von c-hater (Gast)


Lesenswert?

Maxi schrieb:

> In Sämtlichen Tutorials wird die Serielle Schnitstelle
> mit "SerialPort1." angesteuert.

Sprich: die greifen alle auf eine Instanz der Klasse zu. Und so sollte 
es auch sein.

> Bei mir funktioniert das leider nicht.

Weil du nirgendwo eine Instanz der Klasse erzeugst.

> Der Befehl "SerialPort" wird vom Ediotor allerdings erkannt und besitzt
> Eigenschaften und Methoden wie "BaudRate","Open" oder "Close".

Natürlich. Der Typ der Instanzvariablen ist ja per Deklaration 
vereinbart. Das System kann nicht wissen, daß du zu doof dazu bist, zur 
Laufzeit die Referenz auf eine gültige Instanz der Klasse zeigen zu 
lassen.

> Kann mir jemand Weiterhelfen und Tips geben, wie ich das zum laufen
> bekomme ? Wäre euch sehr Dankbar!

Wenn du den Scheiß nicht als schwachsinnigen Screenshot, sondern als 
einfachen Text geposted hättest, hätte ich mich vielleicht sogar 
aufgerafft, diesen Bullshit zu korrigieren. Aber so: Nö.

von c-hater (Gast)


Lesenswert?

Brater schrieb:

> Du musst das Objekt natürlich vorher anlegen mit Dim

Blödsinn. Die Objektreferenz hat er angelegt, sogar mit Dim. sie zeigt 
bloß nicht auf eine Instanz, weil er niemals eine erzeugt.

> Als Empfehlung: nimm kein VB. Die Sprache ist absolut Müll.

Du bist Müll.

Weil du garnix begreifst. Z.B. nicht die Tatsache, daß bei .net die 
verwendete Sprache nahezu keine Rolle spielt. Das ist nur Zuckerl rund 
um's Framework.

von Peter II (Gast)


Lesenswert?

c-hater schrieb:
>> Du musst das Objekt natürlich vorher anlegen mit Dim
> Blödsinn. Die Objektreferenz hat er angelegt, sogar mit Dim. sie zeigt
> bloß nicht auf eine Instanz, weil er niemals eine erzeugt.

wo soll er das denn gemacht haben?

von c-hater (Gast)


Lesenswert?

Peter II schrieb:

> wo soll er das denn gemacht haben?

Wohl im GUI. Sollte in der Form1.Designer.vb zu finden sein.

von Peter II (Gast)


Lesenswert?

c-hater schrieb:
> Peter II schrieb:
>> wo soll er das denn gemacht haben?
> Wohl im GUI. Sollte in der Form1.Designer.vb zu finden sein.

das hat er vermutlich nicht - das wird auch das Problem sein. Du hast 
aber behaupter er hat sie anglegt und das kannst du unmöglich wissen.

von c-hater (Gast)


Lesenswert?

Peter II schrieb:

> das hat er vermutlich nicht

Dann würde aber der Editor nicht die Methoden/Eigenschaften "kennen", 
wie er es zumindest lt. Angabe des OP tut.

Oops, Kommando zurück. Nach nochmaligem Lesen des ziemlich kruden 
Ausgangspostings gebe ich dir nunmehr vollkommen Recht. Der OP behauptet 
nicht, daß der Editor das für für SerialPort1 tun würde, nur, daß er es 
für SerialPort tun würde. Sprich: das waren "shared"-Geschichten der 
Klasse und der OP hat den Kram, (wohl weil es nicht funktioniert hat) 
dann einfach in SerialPort1 unbenannt.

Wodurch es natürlich auch nicht funktioniert, aber nunmehr auch die 
Klassenproperties und -methoden nicht mehr kennen dürfte, was der OP 
aber natürlich nicht erwähnt hat...

von Maxi (Gast)


Lesenswert?

> Hier wie es geht: Youtube-Video "Visual Basic Serial COM Port Tutorial (Visual 
Studio 2010) - Part 2"

Dieses Video war unter anderem der Ursprung meines Vorhabens. Ich habe 
es genauso gemacht, wie in dem TuTo und es funktioniert nicht. Im 
Tutorial wird der Serial Port auch nicht angelegt! Wie ich es auch 
anstelle, "SerialPort1" kann bei mir nicht erkannt werden -.- Was mache 
ich nur falsch ?

von Maxi (Gast)


Lesenswert?

> Natürlich. Der Typ der Instanzvariablen ist ja per Deklaration
> vereinbart. Das System kann nicht wissen, daß du zu doof dazu bist, zur
> Laufzeit die Referenz auf eine gültige Instanz der Klasse zeigen zu
> lassen.

> Wenn du den Scheiß nicht als schwachsinnigen Screenshot, sondern als
> einfachen Text geposted hättest, hätte ich mich vielleicht sogar
> aufgerafft, diesen Bullshit zu korrigieren. Aber so: Nö.

Schön dass du dich so herablassend geäußert hast. So hast du dir 
wenigstens die Mühe gemacht, mich zu beleidigen, das zeigt ne ziemliche 
schwäche. Ich bin nunmal nicht mit vb vertraut, darum frage ich. Bitte 
unterlasse deartige POsts in der Zukunft, die helfen keinem was.

von Maxi (Gast)


Lesenswert?

Brater, dir Danke erstmal für die Antworten. Anscheinend will mir ja 
wenigstens einer helfen (:

ich habe unter anderem auch mit einem anderen Tutorial gearbeitet. 
http://www.youtube.com/watch?v=1YQM30r8Nuo Ab 2:55 ist der Code zu 
sehen. Der sieht so aus:

[c]Imports System.IO.Ports

Public Class Form1

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, 
ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
        Try
            SerialPort1.PortName = TextBox1.Text
            SerialPort1.BaudRate = TextBox2.Text
            SerialPort1.Open()
            Button1.Enabled = False
            Button2.Enabled = True
            Button3.Enabled = True

        Catch ex As Exception
            MsgBox("Verbindungsaufbau gescheitert")

        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As 
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If SerialPort1.isopened = True Then
            SerialPort1.Close()
        End If
    End Sub

    Private Function SerialPort1() As Object
        Throw New NotImplementedException
    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button2.Click
        SerialPort1.write("e" & vbCr)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button3.Click
        SerialPort1.write("a" & vbCr)
    End Sub
End Class
[c]

Aber auch dieser geht nicht. Und auch hier wird "SerialPort1" nicht neu 
angelegt. Irgendwelche Tips ? Ist wirklich wichtig!

Danke schonmal (:

von Peter II (Gast)


Lesenswert?

Maxi schrieb:
> Aber auch dieser geht nicht. Und auch hier wird "SerialPort1" nicht neu
> angelegt. Irgendwelche Tips ? Ist wirklich wichtig!

wir wissen nicht unter welchen namen du das Objekt SerialPort angelegt 
hast. (WEnn du es überhaupt angelegt hast!)

Mach mal ein screenshot von die Formular damit mit den Serialport sehen 
kann.

Und wenn man Programmiert sollte man sich wenigsten ein paar grundlagen 
aneignet - nein videos sind dafür nicht geignet. Du weisst ja nicht mal 
woher das SerialPort kommen soll.

von Maxi (Gast)


Lesenswert?

Und wie lege ich den Port dann an ?

von Peter II (Gast)


Lesenswert?

Maxi schrieb:
> Und wie lege ich den Port dann an ?

wo ist der screenshot vom Formular?

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.