mikrocontroller.net

Forum: PC-Programmierung RS232 Daen vom AVR zum PC Senden


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

Ich beschäfige mich jetzt schon seit langem, mit der Komunikation eines 
AVR mit dem Computer oder ehr gesagt mit Visual Basic 2005.

Nun ich möchte gerne dinge die der Atmel mir mit printf zum PC sendet 
auch auf dem Computer Angezeigt bekommen. Damit sind wir auch bei meinem 
Problem nehme ich mir nämlich das Hyperterminal bekomme ich folgendes 
vom Atmel 200 dies bekomme ich aber nur wenn ich zuvor vom PC folgendes 
übertragen habe 3 150 im Atmel wird dann einfach zu versuchszwecken 50 
hinzuaddiert und es kommt die Rückmeldung 200 so wie es sein soll.

Allerdings bin ich mit meinen versuchen mit VB 2005 nicht sehr weit 
gekommen das einzigste was ich hinbekommen habe ist das mir folgendes 
angezeigt wurde. 203 150 dabei vermischt mir das System einfach das 
Ergebniss mit dem was ich zuvor gesendet habe dieses Ergebniss habe ich 
mit einem Timer erreicht in dem ich erst an den Atmel 3 150 gesendet 
habe und direkt danach mit ReadLine ausgelesen. Erscheind diese 
Zahlenkombination.
(Code)

Daher würde ich von euch gerne wissen wie ich soetwas sinvoll aufbauen 
kann?

Ich habe schon etwas von DataReceived gehört und mich auch schon daran 
versucht allerding wurde das ereignis nie bei mir ausgelöst.

Hier mein bisheriger Code:
Public Class Form1

 Dim aktwert As sting

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.PortName = "COM1"
        SerialPort1.StopBits = System.IO.Ports.StopBits.One
        SerialPort1.Parity = System.IO.Ports.Parity.None
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        SerialPort1.Open()
        SerialPort1.Write("3 150" & Chr(10))
        aktwert = SerialPort1.ReadLine()
        TextBox1.Text = aktwert
        SerialPort1.Close()
    End Sub
End Class

P.s. Ich habe erst vor kurzem mit vb6 angefangen und bin noch in der 
lernphase!

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast es doch schon angesprochen: DataReceived. Das wird aufgerufen 
wenn Daten empfangen wurden. In deinem Timer-Ereignis liest du auf gut 
Glück etwas aus, obwohl vielleicht gar nix drin steht.
Du machst dir also ein DataReceived-Ereignis und packst alle empfangenen 
Daten in einen String. Z.B. so:
    Private buf As New System.Text.StringBuilder

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Call buf.Append(SerialPort1.ReadExisting())
    End Sub

'buf' beinhaltet damit immer eine Folge von empfangenen Zeichen die du 
auswerten kannst. Siehe dazu auch hier: 
Beitrag "µC über Serielle Schnittstelle steuern"

EDIT: Nochwas: Wenn du dich schon mit VB 2005 beschäftigst, dann lass 
VB6 weg. VB6 ist eine gute Sache, allerdings nicht mehr zeitgemäss. 
Lerne besser richtig VB 2005 (Auch als VB .NET bekannt).

Autor: Peter T... (peter_vals)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du eine serielle schnittstelle am pc??? oder ein usb-adapter??? ich 
frage desshalb, weil ich da auch probleme hatte. daten dauerfeuer hat 
funktioniert, aber einzellne Bytes nicht. das problem war trotz 
auschgeschaltenem fifo buffer, dass der usb-seriell converter die daten 
zwischengspeichert hatte und so nur je nach dem nach lust und laune 
weitergeleitet hat. habs dann mit einem anderen adpter versucht und tip 
top geklappt.
ich hatte lange zeit gebraucht um dieser "Fehler" zu finden...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.