Hallo allerseits!
Für ein Projekt muss ich mit VB mit einem ATmega über die UART Schnittstelle kommunizieren. Ich verwende Visual Basic 2008 und für die UART-Kommunikation verwende ich das Serial Port-Steuerelement.
Der Code auf dem ATmega schaltet eine Statusled ein bzw. aus, wenn der String "aus" bzw. an" empfangen wurde. Mit dem Hyperterminal und dem ATmega hat das auch ohne Probleme sofort funktioniert, aber wenn ich das ganze mit VB versuche dann funktioniert es nur bei der ersten Übertragung und dann nicht mehr. Erst sobald der ATmega resettet wird funktioniert es mit VB wieder genau einmal und dann nicht mehr.
Übrigens verwende ich einen ATmega32.
Da es mit dem Hyperterminal funktioniert hat, glaube ich nicht, dass es an der Kabelverbindung liegt. Die Baudrate habe ich auch schon überprüft und die sollte stimmen.
Hier mein VB Code:
Und hier der Bascom-Code für den ATmega:Code:PublicClass Form1 PrivateSub cmdffnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdffnen.Click If SerialPort1.IsOpen = FalseThen SerialPort1.Open() EndIf EndSub PrivateSub cmdSchlieen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSchlieen.Click SerialPort1.Close() EndSub PrivateSub cmdan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdan.Click SerialPort1.WriteLine("an" & vbCrLf) EndSub PrivateSub cmdaus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdaus.Click SerialPort1.WriteLine("aus" & vbCrLf) EndSub PrivateSub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim x AsString x = SerialPort1.ReadLine.ToString MsgBox(x) EndSub EndClass
Code:$regfile "m32def.dat" $crystal = 1000000 $baud = 1200 Config Portd.5 = Output Statusled Alias Portd.5 Statusled = 1 Dim X As String * 10 Do Input X If X = "an" Then Statusled = 1 Elseif X = "aus" Then Statusled = 0 End If Loop







Zitieren

Lesezeichen