- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Variablenübergabe zwischen RS232 und Atmega32

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.06.2004
    Alter
    50
    Beiträge
    66
    Möglicherweise habe ich etwas übersehen (wer schaut mal drüber?), aber so gefällt es besser:
    Code:
    int index=0;
    char ch[19];
    
    while (1)
    {
      c = uart_getc();
      if ( c & UART_NO_DATA )
      {
        /* 
         * no data available from UART 
         */
      }
      else
      {
        /*
         * new data available from UART
         * check for Frame or Overrun error
         */
        if ( c & UART_FRAME_ERROR )
        {
          /* Framing Error detected, i.e no stop bit detected */
          uart_puts_P("UART Frame Error: ");
          ch[0]=0;
          index=0;
        }
        else
        if ( c & UART_OVERRUN_ERROR )
        {
          /* 
           * Overrun, a character already present in the UART UDR register was 
           * not read by the interrupt handler before the next character arrived,
           * one or more received characters have been dropped
           */
          uart_puts_P("UART Overrun Error: ");
          ch[0]=0;
          index=0;
        }
        else
        if ( c & UART_BUFFER_OVERFLOW )
        {
          /* 
           * We are not reading the receive buffer fast enough,
           * one or more received character have been dropped 
           */
          uart_puts_P("Buffer overflow error: ");
          ch[0]=0;
          index=0;
        }
        else
        {
          /* 
           * send received character back
           */ 
          uart_putc( (unsigned char)c );
               
          if((unsigned char)c!=13)
          {
            ch[index]=c;
            index++;   
          }            
          else
          {
            ch[index]=0;
            index = 0;
            if (strcmp (ch,"TEMP1")==0)
            {
              // Temperatur soll angefragt werden
              uart_puts("Temperatur1=..........\n");
            }
            else
            if (strcmp (ch,"TEMP2")==0)
            {
              // Temperatur soll angefragt werden
              uart_puts("Temperatur2=..........\n");
            }
            else
            if (strcmp (ch,"PH")==0)
            {
              // Temperatur soll angefragt werden
              uart_puts("PH=..........\n");
            }
            else
            if (strcmp (ch,"HUMIDITY")==0)
            {
              // Temperatur soll angefragt werden
              uart_puts("Humidityr=..........\n");
            }    
            ch[0]=0;
          }             
        }
      } 
    }
    PS: es fehlt immernoch die Abfrage, ob die Anzahl der Empfangenen Zeichen länger als 18 sind. Das 19. ist das "0" Byte.
    Geändert von Chris266 (27.09.2012 um 18:18 Uhr)

  2. #2

    Lächeln

    Danke Danke habe den Fehler Korrigiert. Habs auch oben abgeändert. Die Abfrage ob der String länger ist bau ich dann später noch ein.

    In VB2010 habe ich das Senden eines Befehls so angestellt:

    Verbindungsbutton RS232:
    PHP-Code:
    Private Sub Button2_Click(sender As System.ObjectAs System.EventArgsHandles Button2.Click
            
    Try
                
    SerialPort1.PortName TextBox12.Text
                SerialPort1
    .BaudRate TextBox13.Text
                SerialPort1
    .DataBits 8
                SerialPort1
    .StopBits IO.Ports.StopBits.One
                SerialPort1
    .Parity IO.Ports.Parity.None
                SerialPort1
    .Handshake IO.Ports.Handshake.None
                SerialPort1
    .Open()
                
    Button2.Enabled False
                Button1
    .Enabled True
                Button3
    .Enabled True
                Button4
    .Enabled True
                Button5
    .Enabled True
                Button6
    .Enabled True
                Button7
    .Enabled True
                ProgressBar1
    .Value 100
                MsgBox
    ("Connected")
            Catch 
    ex As Exception
                ProgressBar1
    .Value 0
                MsgBox
    ("Connection Error 001")
            
    End Try
        
    End Sub 

    SendeButton:
    PHP-Code:
    Private Sub Button7_Click(sender As System.ObjectAs System.EventArgsHandles Button7.Click
            Dim buffer
    (200) As Byte
            Dim offset 
    As Integer
            Dim count 
    As Integer
            Dim returnValue 
    As Integer
            offset 
    0
            count 
    17
            SerialPort1
    .Write(vbCr)
            
    SerialPort1.Write("TEMP1")
            
    SerialPort1.Write(vbCr)
            
    System.Threading.Thread.Sleep(1000)
            
    Dim IncommingData SerialPort1.ReadExisting   
            TextBox15
    .Text IncommingData
     End Sub 
    Geändert von Natureengeneer (28.09.2012 um 00:41 Uhr)

Ähnliche Themen

  1. Atmega32 zwischen GPS-Modul und PC über RS232 . Brauche Hilfe :)
    Von da_miez3 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 14.04.2012, 17:33
  2. UART zwischen Atmega32 und ATmega8
    Von Lunarman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 07.06.2007, 16:22
  3. Kommunikation zwischen C++ und ATMega32 (realisieren??)
    Von strunz im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 16
    Letzter Beitrag: 21.04.2006, 05:37
  4. [ERLEDIGT] Übertragung von Daten zwischen Atmega32 und Atmega128
    Von OBI im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 11.12.2004, 12:41
  5. Variablenübergabe in Funktion
    Von wolf4124 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 19.08.2004, 18:25

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress