- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 12

Thema: RN-Control über RS232 mit PC komunizieren lassen (Vistual Basic)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.06.2010
    Ort
    Darmstadt
    Beiträge
    136
    so ich hab das jetzt mal ausprobiert was im Wiki stand
    aber irgendwie will der nicht so wie ich will^^

    Also was ich machen will, ist Daten zwischen RN-Control und PC austauschen.
    Also die RN-Control bekommt vom PC steuerbefehle und der PC bekommt Sensor werte von der RN-Control
    und das alles soll per RS232 ausgetauscht werden.

    Ich hab es jetzt hinbekommen dass die RN-Control daten an PC sendet aber in meinem Programm kommen die nur gestückelt oder nur teilweise an.
    in Bascom kommt alles richtig an. Also muss das ja wohl an meinem Programm liegen aber ich find den Fehler nicht. Hab soweit alles so eingestellt wie in Bascom, also die Schnittstelleneinstellungen (Bautrate, Com1, usw)

    und wenn ich vom PC an die RN-Control Daten senden will ging das bisher noch gar nicht. die pipst dann nur komisch.

    Kann mir da jemand helfen?

    Hier mal nen Ausschnitt aus dem Quellcode:
    VB-Net:
    Code:
     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim Licht, BlLicht, IRLicht As Integer
            Dim DatenSenden As Boolean
            Dim DatenEmpfangen As String
            Dim AusgabeArr() As String
    
            IRAbstand1 = 0
            IRAbstand2 = 0
            UAbstand1 = 0
            UAbstand2 = 0
            DatenSenden = False
    
            MotorL = CInt(MoDrehzahl * MotorL / 100)
            MotorR = CInt(MoDrehzahl * MotorR / 100)
    
            If MotorL < 0 Then
                prbUKetteL.Value = MotorL * (-1)
            Else
                prbUKetteL.Value = MotorL
            End If
    
            If MotorR < 0 Then
                prbUKetteR.Value = MotorR * (-1)
            Else
                prbUKetteR.Value = MotorR
            End If
    
            Licht = Scheinwerfer
            BlLicht = Blinklicht
            IRLicht = IRStrahler
            DatenEmpfangen = ""
    
            'Daten vom COM Port empfangen
            If SerialPort1.BytesToRead > 0 Then
                Do
                    rtbFehlermeldungen.AppendText(Chr(SerialPort1.ReadByte)) 'Hier ist der Fehler. Man kann ja nicht zweimal Daten auslesen wenn sie schon ausgelesen sind^^
                    rtbFehlermeldungen.ScrollToCaret()
                    DatenEmpfangen = DatenEmpfangen & Chr(SerialPort1.ReadByte) & ";"
                    If SerialPort1.BytesToRead = 0 Then
                        Exit Do
                    End If
                Loop
                If chbRNSenden.Checked = True Then
    
    
                    'Werte aus Ausgabe Array den einzelnen Variablen zuordnen
                    IRAbstand1 = CInt(AusgabeArr(1))
                    IRAbstand2 = CInt(AusgabeArr(2))
                    UAbstand1 = CInt(AusgabeArr(3))
                    UAbstand2 = CInt(AusgabeArr(4))
                    Batteriestatus = CShort(AusgabeArr(5))
                    lblTempA.Text = AusgabeArr(6)
                    lblTempI.Text = AusgabeArr(7)
                    rtbFehlermeldungen.Text = rtbFehlermeldungen.Text & vbNewLine & AusgabeArr(0)
    
                    DatenSenden = True
                End If
            End If
    
            AusgabeArr = message.Split(CChar(";"))     'empfangenen Text trennen und in ein String-Array speichern
    
            If DatenSenden = True Then
                'Daten über den COM Port RS232 an die RN-Control senden:
                If SerialPort1.IsOpen Then 'folgenden Code nur ausführen wenn auch eine Verbindung besteht
                    SerialPort1.Write("Motorr" + (MotorR).ToString + Chr(13)) 'per RS232 die aktuelle Motordrehzahl für Rechten Motor senden ' " CHr(13) =Enter drücken"
                    SerialPort1.Write("Motorl" + (MotorL).ToString + Chr(13)) 'per RS232 die aktuelle Motordrehzahl für Linken Motor senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("Licht" + (Licht).ToString + Chr(13)) 'per RS232 der Scheinwerfer an aus senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("BlLicht" + (BlLicht).ToString + Chr(13)) 'per RS232 das Blinklicht an aus senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("IRLicht" + (IRLicht).ToString + Chr(13)) 'per RS232 der IR-Strahler an aus senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("SchildH" + (SchildPosH).ToString + Chr(13)) 'per RS232 das SchildHorizontal  senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("SchildV" + (SchildPosV).ToString + Chr(13)) 'per RS232 der Schild Vertikal senden ' " CHr(13) =Enter drücken"
                    'SerialPort1.Write("Kamerapos" + (KameraPosition).ToString + Chr(13)) 'per RS232 der Schild Vertikal senden ' " CHr(13) =Enter drücken"
    
                End If
                DatenSenden = False
            End If
    
            lblIRAbstand1.Text = IRAbstand1 & " cm"
            lblIRAbstand2.Text = IRAbstand2 & " cm"
            lblUAbstand1.Text = UAbstand1 & " cm"
            lblUAbstand2.Text = UAbstand2 & " cm"
    
            KameraPosition = 0
            SchildPosH = 0
            SchildPosV = 0
            MotorL = 0
            MotorR = 0
        End Sub
    Quellcode RN-Control (Bascom)
    Code:
    'Microcontroller Einstellungen Definieren.
     $regfile = "m32def.dat"
     $framesize = 32
     $swstack = 32
     $hwstack = 32
     $crystal = 16000000
     $baud = 9600
    
    ...
    
    'Hauptprogramm
    Do
       Taste = Tastaturabfrage()
       If Taste <> 0 Then
          Select Case Taste
             Case 1
                Empfangstatus = 0
             Case 2
                Empfangstatus = 1
             Case 3
    
             Case 4
    
             Case 5
                Print "Programm wurde abgebrochen"
                Sound Portd.7 , 800 , 400
                Exit Do
          End Select
       End If
    
       Fehlermeldung = "Dies Ist Ein Test"
       Irabstand1 = 20
       Irabstand2 = 10
       Uabstand1 = 500
       Uabstand2 = 100
       Batteriespannung
       Batteriestatus = Spannung
       Temperatura = 2
       Temperaturi = 20
    
       If Empfangstatus = 1 Then
          Print Fehlermeldung
          Print Irabstand1
          Print Irabstand2
          Print Uabstand1
          Print Uabstand2
          Print Batteriestatus
          Print Temperatura
          Print Temperaturi
          Empfangstatus = 1   'Normal 0 aber zu testzwecken auf 1 umgestellt.
       End If
    
       If Empfangstatus = 0 Then
          Data_available = Ischarwaiting()
          If Data_available > 0 Then                            'Wenn Daten da sind, dann...
             Input "" , Inputstring
             Motorr_empfangen = Instr(inputstring , "Motorr")   'Gibt den Motorwert des Substrings "Motorr" aus oder NULL wenn nicht gefunden
             Motorl_empfangen = Instr(inputstring , "Motorl")   'Gibt den Motorwert des Substrings "Motorl" aus oder NULL wenn nicht gefunden
             Empfangstatus = 1
          End If
    
          If Motorr_empfangen = 1 Then
             Motorr_wert_string = Mid(inputstring , 2)          'Die erste stelle des Strings (Das Motorr) abschneiden
             Motorr_wert_integer = Val(motorr_wert_string)      'String in Integer konvertieren
          End If
    
          If Motorl_empfangen = 1 Then
             Motorl_wert_string = Mid(inputstring , 2)          'Die erste stelle des Strings (Das Motorr) abschneiden
             Motorl_wert_integer = Val(motorl_wert_string)      'String in Integer konvertieren
          End If
       End If
    
       Motorr = Motorr_wert_integer
       Motorl = Motorl_wert_integer
    
       Motorschalten
    
       Ausgabe1 = Motorr * 4
       Ausgabe2 = Motorl * 2
    
       Motorr = 0
       Motorl = 0
       Sound Portd.7 , 10 , Ausgabe1
       'Sound Portd.7 , 10 , Ausgabe2
       Waitms 900
    Loop
    End
    Geändert von robonooby (21.03.2011 um 18:23 Uhr)
    Es gibt keine Probleme, es gibt nur Lösungen

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress