- 12V Akku mit 280 Ah bauen         
Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 63

Thema: RS232 daten empfangen, senden und auswerten

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Anzeige

    E-Bike
    Hi!
    Das Tut im Wiki ist von mir. Um variablen in verschiedenen textboxes auszugeben musst du eine Art Marker verwenden. z.B. dein µC sendet:
    A53
    B129
    C223
    Die Buchstaben sagen um was für daten es sich grad handelt. z.B. A bedeutet dass es Temparaturdaten sind, B ist Motorstrom etc.

    In deiner GUI liest du alle Daten per RS232 ein und guckst dann nach welche Daten es sind und teilst sie dann auf deine Textboxes auf.
    Code:
    readvar=SerialPort1.ReadLine
    ContainsA = readvar.Contains("A")    'checkt ob ein "A" im String ist -> also temperatur
    If ContainsA=true then          'wenn ein A drin ist
      Temperaturwert=readvar.TrimStart("A")    'dann das A abschneiden 
      temperaturtextbox.text=temperaturwert    'Rest in die textbox schreiben
    end if
    So ungefähr sollte das gehen. Dieses Verfahren habe ich auch für meinen Tricopter verwendet, im Video siehst du wie die Software funktioniert:
    http://www.villalachouette.de/willia...copter/Tri.wmv
    Viele Grüße, William
    -> http://william.thielicke.org/

  2. #12
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    Hallo Willa,

    kannst du noch etwas genauer beschreiben wo der von dir genannte Code
    eingefügt werden muss? ich interssiere mich auch brennend für solche Anleitungen.

    PS: Danke für die Erstellung des WIKI!!!
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  3. #13
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Okay, ich kanns gerne nochmal genauer erklären:
    Der Serialport wird in einem Timer abgerufen (Interval z.B. 15ms)
    Code:
    Sub Timer1Tick(ByVal sender As Object, ByVal e As EventArgs)
       if serialport1.BytesToRead > 0 then
          Do
             readvar=SerialPort1.ReadLine
    
             ContainsA = readvar.Contains("A")
             ContainsB = readvar.Contains("B")
             ContainsC = readvar.Contains("C")
    
             if ContainsA = true then
                A_Daten=readvar.TrimStart("A")
                Textbox1.text=A_Daten
             end if
    
             if ContainsB = true then
                B_Daten=readvar.TrimStart("B")
                Textbox2.text=B_Daten
             end if   
    
             if ContainsC = true then
                C_Daten=readvar.TrimStart("C")
                Textbox3.text=C_Daten
             end if			
    
             If SerialPort1.BytesToRead = 0 Then
                Exit Do
             end if
    
          loop
       end if
    end sub
    Ich glaube so sollte das klappen. Vorher müsst ihr natürlich die Variablen noch deklarieren und den Serialport öffnen (so wie im Wiki beschrieben).
    Viele Grüße, William
    -> http://william.thielicke.org/

  4. #14
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    Da meine Kenntnisse in Sharp sehr begrenzt sind (alles was ich darüber weis
    ist aus deinem WIKI) würdest du mir einen großen Gefallen damit erweisen
    wenn du noch erklären könntest wo und wie man in Sharp Variablen deklariert. Ich kenne mich programmiertechnisch leider nur in Bascom aus.

    Vielen Dank schon mal
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Hi, danke das du auf meine Mail reagiert hast

    Das läuft jetzt so wie ich es in etwa haben wollte.
    Im moment macht er mir noch ein merkwürdiges zeichen hinter der ausgabe,
    son kästchen, weis da einer was?

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Das geht ca. so wie in Bascom auch:
    Dim ContainsA As Boolean
    Dim readvar as string

    Am besten direkt unter diese automatisch erzeugten Zeilen setzen:
    public Sub New()
    Me.InitializeComponent()
    End Sub

    Dann kann man auf die Variablen aus jeder Sub zugreifen.
    Viele Grüße, William
    -> http://william.thielicke.org/

  7. #17
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    @Christian:
    Wie sieht denn dein Sendebefehl auf dem µC genau aus?
    Viele Grüße, William
    -> http://william.thielicke.org/

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    hier mal mein code im SharpDevelop
    Code:
    Public Partial Class MainForm
    	Public Sub New()
    		' The Me.InitializeComponent call is required for Windows Forms designer support.
    		Me.InitializeComponent()
    		serialport1.open
    		'
    		' TODO : Add constructor code after InitializeComponents
    		'
    	End Sub
    	
    	Sub Button1Click(sender As Object, e As EventArgs)
    		serialport1.Write (1)
    	End Sub
    	
    	Sub Button2Click(sender As Object, e As EventArgs)
    		serialport1.Write (2)
    	End Sub
    	
    	Sub Button3Click(sender As Object, e As EventArgs)
    		serialport1.Write (3)
    	End Sub
    	
    	Sub Button4Click(sender As Object, e As EventArgs)
    		serialport1.Write ("r")
    	End Sub
    	Dim readvar As String
    	Dim ContainsA As Boolean 
    	Dim ContainsB As Boolean 
    	Dim Temperaturwert As String 
    
    
    	Sub Timer1Tick(sender As Object, e As EventArgs)
    		If serialport1.BytesToRead > 0 Then
    			Do
         	 		readvar=SerialPort1.ReadLine
    				ContainsA = readvar.Contains("A") 
    				ContainsB = readvar.Contains("B")'checkt ob ein "A" im String ist -> also temperatur
    				If ContainsA=true then          'wenn ein A drin ist
      					Temperaturwert=readvar.TrimStart("A")    'dann das A abschneiden
      					temperaturtextbox.text=temperaturwert    'Rest in die textbox schreiben
    				End If 
    				If ContainsB=true then          'wenn ein A drin ist
      					Temperaturwert=readvar.TrimStart("B")    'dann das A abschneiden
      					temperaturtextbox2.text=temperaturwert    'Rest in die textbox schreiben
    				end if 
        	  		
        		If SerialPort1.BytesToRead = 0 Then
       	  	    Exit Do
      	    	End If
     	  	Loop
    		End If
    		
    		
    
    	End Sub
    	
    	
    	
    	Sub Label1Click(sender As Object, e As EventArgs)
    		
    	End Sub
    	
    	Sub Timer2Tick(sender As Object, e As EventArgs)
    		
    	End Sub
    End Class
    hier mein AVR
    Code:
    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"
             Sound Portd.7 , 400 , 450
             Print "ATaste 1 wurde gedrückt"
          Case 50                                               'Das ist der ASCII Code für Taste "2"
             Sound Portd.7 , 400 , 550
             Print "BTaste 2 wurde gedrückt"
          Case 51                                               'Das ist der ASCII Code für Taste "3"
             Sound Portd.7 , 400 , 650
             Print "Taste 3 wurde gedrückt"
          Case 114                                              'Das ist der ASCII Code für Taste "r"
             Print "Reset..."
             Goto 0
       End Select
    End If
    Loop

  9. #19
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    hmmm, ob mein Code bei strings wie "BTaste 2 wurde gedrückt" funktioniert weiss ich nicht....
    Sende doch mal soetwas:
    print "A" ; 123
    print "B" ; 124
    Viele Grüße, William
    -> http://william.thielicke.org/

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Ist immer noch das kästchen hinter

Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests