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
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.
@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.
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.
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).
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ö.
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.
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?
Peter II schrieb: > wo soll er das denn gemacht haben? Wohl im GUI. Sollte in der Form1.Designer.vb zu finden sein.
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.
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...
> 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 ?
> 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.
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 (:
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.