Nein ,keine MsgBox. Ich meine Das was du auf dem Bild sehen kannst. (UNten)
Druckbare Version
Nein ,keine MsgBox. Ich meine Das was du auf dem Bild sehen kannst. (UNten)
Da ist doch die MsgBox!
Du musst sowas sofort Posten. Lass dir doch die Fehelermeldung nicht aus der Nase ziehen.
Ich bleib dabei Schnittstelle schon offen oder falsche angegeben. Ist das immernoch COM10? Prüf das mal. Wenn du den USB Port wechselst, kann es sein das sich auch der COM Port ändert.
Ach ok ,jetzt weiß ich was du meinst. Also zum erklären : Das ist das Bild vom Anfang ,nicht aktuell. Also diese MsgBox rechts oben kam vorhin nicht ,nur das da unten.
Mit dem Terminal Emu in Bascom habe ich den Code com MC aber schon getestet , damit hat es funktioniert. Also muss es an vb direkt liegen.
- - - Aktualisiert - - -
Ich habe jetzt mal den Code ein bisschen abgeändert :
Ich habe einfach mal beim Button 4 Sub dieses open und close Serial Port weggelassen und die Verbesserung vorgenommen ,die du vorgeschlagen hattest.Code:Public Class Form1
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("Verbindung konnte nicht hergestellt werden")
End Try
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If SerialPort1.IsOpen = True Then
SerialPort1.Close()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Write("1" & vbCr)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SerialPort1.Write("0" & vbCr)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Try 'Versuche
SerialPort1.PortName = TextBox1.Text 'Portname wird TextBox 1 entnommen
SerialPort1.BaudRate = TextBox2.Text 'Baudrate wird Text Box 2 entnommen
TextBox3.Text = SerialPort1.ReadLine() 'Das ,was empfangen wurde ,wird der Var getText zugeordnet
Catch ex As Exception
MsgBox("Verbindung konnte nicht hergestellt werd") 'Wenn es nicht geht soll das erscheinen
End Try
End Sub
End Class
Jetzt lässt sich wieder der Zustand der LED auf dem Board steuern. Doch bekomme ich immer noch keinen Wert bei der Text Box angezeigt . Sobald ich auf den Button 4 drücke , bekomme ich dies MsgBox ,die du meintest angezeigt.
Dann änder mal testweise die Zeile
inCode:TextBox3.Text = SerialPort1.ReadLine()
um.Code:TextBox3.Text = SerialPort1.Read()
Damit liest du nur ein einziges Byte ein. Zum Testen ob überhaupt was kommt sollte das reichen.
Wenn das auch nicht klappt, kannst du noch den try und catch kram auskommentieren. Dann stürzt dein Programm richtig ab und der debugger zeigt dir mehr infos. Diese Infos postest du dann hier. Also für Button4 so
Code:Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Try 'Versuche
SerialPort1.PortName = TextBox1.Text 'Portname wird TextBox 1 entnommen
SerialPort1.BaudRate = TextBox2.Text 'Baudrate wird Text Box 2 entnommen
TextBox3.Text = SerialPort1.ReadLine() 'Das ,was empfangen wurde ,wird der Var getText zugeordnet
'Catch ex As Exception
'MsgBox("Verbindung konnte nicht hergestellt werd") 'Wenn es nicht geht soll das erscheinen
'End Try
End Sub
Also bei dem Ersetzen durch :TextBox3.Text = SerialPort1.Read() ,zeigt er mir schon bevor ich debug will das:Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "Read" diese Anzahl von Argumenten akzeptiert. C:\Users\(Mein Name ,lasse ich mal weg)\Documents\Visual Studio 2010\Projects\Seriell-1.vb 43 29 Seriell-1
an.
Bei diesem unteren was du da geschrieben hast zeigt er das an:
Anhang 24955
Ja dann den COM Port schliessen, die parameter setzen und dann vor dem read wieder öffnen und anschließend wieder schließen.
Code:Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Try
SerialPort1.Close()
SerialPort1.PortName = TextBox1.Text
SerialPort1.BaudRate = TextBox2.Text
SerialPort1.Open()
TextBox3.Text = SerialPort1.ReadLine()
SerialPort1.Close()
'Catch ex As Exception
'MsgBox("Verbindung konnte nicht hergestellt werd")
'End Try
End Sub
Also ,wenn ich jetzt einmal den Button vier klicke hängt sich die Anwendung auf (es lässt sich keine Taste mehr drücken,auch nicht die zum Schließen). :)
Aber es kommt keine Fehlermeldung mehr.
ja er wartet auf ein CR&LF. Erst wenn das kommt gehts weiter ;-)
Ach so... Könnte man das auch irgendwie so machen, das in der TextBox einfach das eingezeigt wird,was gerade empfangen wird (wie Bascom Emu ) und ich gleichzeitig den Roboter teuern kann ???
Ja das ist unser Ziel. Aber erstmal wollen wir doch das die serielle Kommunikation überhaupt funktioniert.
Step by step! ;-)
Schreib mal in Button1 vor das "SerialPort1.Open()" das heir "SerialPort1.ReadTimeout = 500". Damit wartet er nur 500 millisekunden. Kommt dann kein CR&LF macht dein Programm weiter.
Funktioniert das Empfangen denn jetzt?