- fchao-Sinus-Wechselrichter AliExpress         
Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte
Ergebnis 41 bis 50 von 63

Thema: RS232 daten empfangen, senden und auswerten

  1. #41
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich hab ne vermutung

    Könnte an an Waitms liegen? Denn selbst wenn ich Print weglasse kommt nicht alles an, vllt bei 20mal drücken des buttom kommt mal der vollständige Code an.

    Aber ohne Waitms und mit Print reagiert mein tool nicht mehr

  2. #42
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Kann mir irgendwie grad schwer deinen Programmablauf vorstellen... vielleicht solltest du mal genau schreiben was wann passiert. Also erst ischarwaiting, dann input dann waitms etc pp...
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #43
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Bascom
    Code:
    '===CHIP SETTINGS===
    Declare Sub Abfrage() As Byte
    
    $regfile = "m32def.dat"
    $framesize = 64
    $swstack = 64
    $hwstack = 64
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 19200
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    
    
    
    
    Dim Inputstring As String * 10
    Dim I As Byte
    Dim A As Byte
    
    Const I2crnmotorslaveadr = &H58                             'I2C SlaveAdresse von RN-Schrittmotor Erweiterung
    Const I2crnmotorsreadlaveadr = &H59                         'I2C SlaveAdresse von RN-Schrittmotor Erweiterung
    Dim I2cdaten(7) As Byte
    
    Const Befehl_endlosdrehung = 54
    Const Motor_1 = 3
    
    Dim Extrahierter_integer As Integer
    Dim Motor_speed_x As Byte
    Dim Motor_x_an_aus As Byte
    Dim Motor_speed_y As Byte
    Dim Motor_y_an_aus As Byte
    Dim Motor_x_richtung As Byte
    Dim Motor_y_richtung As Byte
    Dim Motor_x_weg As Byte
    Dim Trackbar_wert_string As String * 10
    Dim Trackbar_wert_byte As Byte
    
    Dim Schritte As Long
    Dim Temp As Byte
    Dim Ltemp As Long
    Dim Umdrehungen As Single
    Dim Fahrstrecke As Word
    
    Dim Startt As Byte
    Dim Data_available As Byte
    
    
    
    
     Do
    
      Data_available = Ischarwaiting()
      If Len(data_available) <> 0 Then
      input "" , Inputstring
      Motor_speed_x = Instr(inputstring , "SpX")
      Motor_x_an_aus = Instr(inputstring , "anX")
      Motor_x_richtung = Instr(inputstring , "RiX")
      Motor_x_weg = Instr(inputstring , "WeX")
    
      Motor_speed_y = Instr(inputstring , "SpY")
      Motor_y_an_aus = Instr(inputstring , "anY")
      Motor_y_richtung = Instr(inputstring , "RiY")
    
      If Motor_x_weg = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_x_weg = 0
    
         I2cdaten(1) = 102
         I2cdaten(2) = 1
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
         I2cstart
         I2cwbyte I2crnmotorsreadlaveadr
         I2crbyte Temp , Ack
         Schritte = Temp
         I2crbyte Temp , Ack
         Ltemp = Temp * 256
         Schritte = Schritte + Ltemp
         I2crbyte Temp , Ack
         Ltemp = Temp * 65536
         Schritte = Schritte + Ltemp
         I2crbyte Temp , Nack
         Ltemp = Temp * 16777216
         Schritte = Schritte + Ltemp
         I2cstop
         Print "WeX:" ; Schritte
         'Umdrehungen = Schritte / 200
        ' Print "Umdrehungen: " ; Umdrehungen
        ' Fahrstrecke = Umdrehungen * 31.4
        ' Print "Der Roboter ist " ; Fahrstrecke ; " cm gefahren "
      End If
    
      If Motor_speed_x = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_speed_x = 0
    
         I2cdaten(1) = 53
         I2cdaten(2) = 1
         I2cdaten(3) = Trackbar_wert_byte
         I2cdaten(4) = 0
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
      End If
    
      If Motor_x_an_aus = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_x_an_aus = 0
    
         If Trackbar_wert_byte = 1 Then
         I2cdaten(1) = Befehl_endlosdrehung
         I2cdaten(2) = 1
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
         Else
         I2cdaten(1) = 51
         I2cdaten(2) = 1
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
         End If
      End If
    
      If Motor_x_richtung = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_x_richtung = 0
    
         If Trackbar_wert_byte = 1 Then
         I2cdaten(1) = 52
         I2cdaten(2) = 1
         I2cdaten(3) = Trackbar_wert_byte
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
         Else
         I2cdaten(1) = 52
         I2cdaten(2) = 1
         I2cdaten(3) = Trackbar_wert_byte
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
         End If
      End If
    
    
      If Motor_speed_y = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_speed_y = 0
    
         I2cdaten(1) = 53
         I2cdaten(2) = 2
         I2cdaten(3) = Trackbar_wert_byte
         I2cdaten(4) = 0
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
      End If
    
    
      If Motor_y_an_aus = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_y_an_aus = 0
    
         If Trackbar_wert_byte = 1 Then
         I2cdaten(1) = Befehl_endlosdrehung
         I2cdaten(2) = 2
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
         Else
         I2cdaten(1) = 51
         I2cdaten(2) = 2
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
         End If
      End If
    
      If Motor_y_richtung = 1 Then
         Trackbar_wert_string = Mid(inputstring , 4)
         Trackbar_wert_byte = Val(trackbar_wert_string)
         Motor_y_richtung = 0
    
         If Trackbar_wert_byte = 1 Then
         I2cdaten(1) = 52
         I2cdaten(2) = 2
         I2cdaten(3) = Trackbar_wert_byte
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
         Else
         I2cdaten(1) = 52
         I2cdaten(2) = 2
         I2cdaten(3) = Trackbar_wert_byte
         I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
         End If
      End If
    
    End If
          Print "Test"
        Waitms 10
    Loop
    End
    SharpDevelop
    Code:
    ' Erstellt mit SharpDevelop.
    ' Benutzer: William
    ' Datum: 28.02.2009
    ' Zeit: 19:36
    ' 
    ' Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
    '
    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
    	
    	Dim onX As Byte
    	Dim RichtungX As Byte
    	Dim onY As Byte
    	Dim RichtungY As Byte
    	Dim ContainsA As Boolean
    	Dim ContainsB As Boolean
    	Dim ContainsC As Boolean
    	Dim readvar As String 
    	Dim A_Daten As String 
    
    	Sub Timer1Tick(sender As Object, e As EventArgs)
    		if serialport1.BytesToRead > 0 then
       Do
          textbox1.AppendText (chr(SerialPort1.Readbyte))
          textbox1.ScrollToCaret
          If SerialPort1.BytesToRead = 0 Then
             Exit Do
          End If
       Loop
    end if
    
    	End Sub
    	
    	Sub TrackBar2Scroll(sender As Object, e As EventArgs)
    		serialport1.Write ("SpX" + (Speed_motor_1.Value).tostring + Chr(13))
    		SpeedMotor1.text = 11- Speed_motor_1.Value
    	End Sub
    	
    	Sub Button3Click(sender As Object, e As EventArgs)
    		If RichtungX = 0 Then
    		serialport1.Write ("RiX" + (1).tostring + Chr(13))
    		RichtungX = 1
    		Else
    		serialport1.Write ("RiX" + (0).tostring + Chr(13))
    		RichtungX = 0
    		End If
    	End Sub
    	
    	Sub Button1Click(sender As Object, e As EventArgs)
    		If onX = 0 Then
    		serialport1.Write ("anX1" + Chr(13))
    		onX = 1
    		Else
    		serialport1.Write ("anX0" + Chr(13))
    		onX = 0
    		End If
    	End Sub
    	
    	Sub TrackBar1Scroll(sender As Object, e As EventArgs)
    		serialport1.Write ("SpY" + (Speed_motor_2.Value).tostring + Chr(13))
    		SpeedMotor2.text = 11- Speed_motor_2.Value
    	End Sub
    	
    	Sub Button2Click(sender As Object, e As EventArgs)
    		If onY = 0 Then
    		serialport1.Write ("anY1" + Chr(13))
    		onY = 1
    		Else
    		serialport1.Write ("anY0" + Chr(13))
    		onY = 0
    		End If
    	End Sub
    
    	Sub Button4Click(sender As Object, e As EventArgs)
    		If RichtungY = 0 Then
    		serialport1.Write ("RiY" + (1).tostring + Chr(13))
    		RichtungY = 1
    		Else
    		serialport1.Write ("RiY" + (0).tostring + Chr(13))
    		RichtungY = 0
    		End If
    	End Sub
    End Class

  4. #44
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    vielleicht solltest du mal genau schreiben was wann passiert
    das habe ich gesagt weil ich eigentlich keine große Lust habe deinen quellcode zu durchforsten... Aber vielleicht findet sich ja jemand der das mal durchguckt.
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #45
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Sry hatte das problem vergessen

    So wie es jetzt oben ist kommt so gut wie kein String den ich vom Tool zum AVR sende vollständig an.
    Lass ich das Waitms weg reagiert das Tool nicht mehr,

  6. #46
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Wie gesagt das Tool sendet die Stings nicht vollständig an den AVR
    Lass ich Print weg und setzte Waitms auf 100 kommt auch nix vollständig an

    Wenn ich Waitms und Print weglasse läuft alles super

  7. #47
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Was mir grad als erstes mal auffällt:
    Data_available = Ischarwaiting()
    If Len(data_available) <> 0 Then

    ist IMMER true. guck dir mal die hilfe zu ischarwaiting an. Vielleicht ist das ja schon die lösung
    Viele Grüße, William
    -> http://william.thielicke.org/

  8. #48
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Hab das jetzt geändert in
    Code:
    Data_available = Ischarwaiting()
      If Data_available = 1 Then
    Aber es hat nix gebracht, denn immer wenn ich Waitms reinschreibe ( in Bascom) kommen die Strings nicht mehr vollständig am AVR an

    Ich steh voll aufm schlauch hier, mir fehlt leider die erfahrung um so ein problem zulösen

  9. #49
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Ich glaub das Problem ist waitms, denn jeder string der per RS232 reinkommt muss sofort abgeholt werden damit dein Programm nicht durcheinanderkommt. Wenn zwei Strings im Buffer sind funktioniert das mit dem markieren der strings nicht mehr richtig könnte ich mir vorstellen.
    Ersetze das waitms doch durch einen timergesteuerten interrupt. Wie das geht steht bestimmt im wiki.
    Viele Grüße, William
    -> http://william.thielicke.org/

  10. #50
    Benutzer Stammmitglied
    Registriert seit
    25.02.2009
    Beiträge
    51
    Hm
    Ich hab mir das mal angeschaut im Wiki ( https://www.roboternetz.de/wissen/in...scom_und_Timer ) und mit google hab ich auch gesucht aber verstehen tu ich es nicht wirklich wie ein Timer funktioniert, ich weis nur das er das hauptprogramm unterbricht, runterzahlt und das hauptprogramm fortfährt, aber wie er das macht und wie ich das einsetzten soll versteh ich nicht

Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests