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:
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
Und hier der Bascom-Code für den ATmega:
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