-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: SerialPort & Visual Studio 2008

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von fat tony
    Registriert seit
    01.08.2007
    Ort
    Herford
    Alter
    34
    Beiträge
    147

    SerialPort & Visual Studio 2008

    Anzeige

    Hallo zusammen.

    Bin gerade dabei einen Elektronischen Kompass zu Programmieren.
    Benutze da zu einen ATMega2560 mC in Verbindung mit einem Kompassmodul.
    Die Ausgabe des Winkels funktioniert mittlerweile ganz gut über das Terminal in Bascom AV.
    Nun habe ich über Visual Studio eine passende Oberfläche entworfen.
    Nun stellt sich mir jedoch die Frage wie ich die Winkelübergabe über USB (COM4) am besten umsetze.
    Kann mir da jemand weiter helfen ?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Moin!
    Welche Programmiersprache nutzt Du? VB, C#, C++?
    Und was genau meinst Du mit 'umsetzen'? Die Übertragung an sich, oder die Visualisierung oder ???
    Mot DotNet kommt man super an die seriellen Ports ran, für C++ habe ich eine kleine Klasse, die ohne MFC und so auskommt...
    MfG
    Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von fat tony
    Registriert seit
    01.08.2007
    Ort
    Herford
    Alter
    34
    Beiträge
    147
    Ich programmiere mit Basic.
    Mit umsetzen meine ich wie ich den Winkel (die Abweichung von Norden) von dem mC an VB übergeben kann.
    Visual Basic stellt ja bei den Tools schon ein Serial Port bereit , weiß nur nicht wie ich den einbinden muss.

    Das ist der Code des mC, zum senden :
    Code:
    ....
    Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com4:" For Binary As #4 
    ....
    
    ....
    Print #4 ,  Himmelsrichtung
    ....

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200
    Ist zwar nicht viel, aber durch diesen Artikel bin ich auch darauf aufmerksam geworden:
    http://www.roboternetz.de/wissen/ind...rn_des_AVR%27s

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von fat tony
    Registriert seit
    01.08.2007
    Ort
    Herford
    Alter
    34
    Beiträge
    147
    Die Seite ist gut aber irgendwie geht es bei mir immer noch nicht

    Habe mir mal folgendes Testprogramm geschrieben:

    VB
    Code:
    Public Class Form1
    
        Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
            Me.InitializeComponent()
            SerialPort1.Open()
        End Sub
    
        Private Sub cmdEingabe1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe1.Click
            SerialPort1.Write(1)
        End Sub
    
        Private Sub cmdEingabe2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe2.Click
            SerialPort1.Write(2)
        End Sub
    
        Private Sub cmdEingabe3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdEingabe3.Click
            SerialPort1.Write(3)
        End Sub
    
        Private Sub cmdReset_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdReset.Click
            SerialPort1.Write("r")
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If SerialPort1.BytesToRead > 0 Then
                Do
                    txtAnzeige.AppendText(Chr(SerialPort1.ReadByte))
                    txtAnzeige.ScrollToCaret()
                    If SerialPort1.BytesToRead = 0 Then
                        Exit Do
                    End If
                Loop
            End If
        End Sub
    
    End Class
    Und in BascomAVR
    Code:
    $prog , 255 , &B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus
    
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
    
    $crystal = 16000000                                         'Quarzfrequenz
    
    Config Pind.5 = Output
    Led Alias Portd.5
    
    Config Pine.5 = Input
    USB Alias Pine.5                                            'Ist 1 wenn USB angeschlossen
    
    Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com4:" For Binary As #4                               'USB Buchse
    
    
    
    Dim A As Byte
    
    Do
    A = Inkey()
    If A > 0 Then
        Select Case A
          Case 49                                               'Das ist der ASCII Code für Taste "1"
             Print #4 , "Taste 1 wurde gedrückt!"
          Case 50                                               'Das ist der ASCII Code für Taste "2"
             Print #4 , "Taste 2 wurde gedrückt!"
          Case 51                                               'Das ist der ASCII Code für Taste "3"
             Print #4 , "Taste 3 wurde gedrückt!"
          Case 114                                              'Das ist der ASCII Code für Taste "r"
             Print #4 , "Reset..."
             Goto 0
       End Select
    End If
    Loop
    
    End
    Was bewirkt den das "Inkey()" da eigentlich ? Dachte das nimmt man für Tasten die auf dem Board sind und nicht über einen Port kommen ?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    nimm mal statt serialport1.write(..) lieber serialport1.basestream.writebyte(...)

    und bei Bascom hab ich waitkey statt inkey genommen..

    genauere hintergründe kann ich dir auch nicht nennen, aber so gehts bei mir

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    der Unterschied ist schnell erklärt und steht auch schön in der Hilfe drin:
    Zitat Zitat von Bascom Hilfe
    While Inkey() returns a character from the serial buffer too, INKEY() continues when there is no character. Waitkey() waits until there is a character received. This blocks your program.
    mfg

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    hab eine zeile nach dem waitkey noch nen timeout gesetzt, geht prima und man verpasst das zeichen nicht ...

    aber sowieso VIEL besser löst man das mit nem interrupt

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied Avatar von fat tony
    Registriert seit
    01.08.2007
    Ort
    Herford
    Alter
    34
    Beiträge
    147
    ok und wie mache ich das ?
    Hast du mal ein Beispiel Prog. für mich ?

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    ja, ich schreibs später rein, bin mal eben ne halbe stunde weg

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •