-         

Ergebnis 1 bis 6 von 6

Thema: <CR><LF> und die RS232

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40

    <CR><LF> und die RS232

    Anzeige

    Hallo!

    ich habe ein problem! ich bekomme von einen controler über die RS232 ein code der sich aus einer 12 stelligen HEX zahl zusammensetzt und hinter der die befehle <CR><LF> sind diesen code möchte ich mit einem µc empfangen und weiterverarbeiten

    zum testen habe ich folgendes geschrieben

    Code:
    $regfile = "2313def.dat"                                    
    $crystal = 3686400
    $baud = 9600                                               
    Ddrd = &B1011110                                           
    Portd = &B0100001
    
    Dim A As String * 12
    Q:
    Input A
    If A = "î0FA17F62AD0" Then
      Cls
      Lcd "Richtig"
      Wait 1
      Goto Q
    Else
      Cls
      Lcd "Falsch"
      Wait 1
      Goto Q
    End If
    End
    nun das problem sobalt der code gesentet wirt bekomme ich die meldung im LCD Richtig sende ich den code nocheinmal dann kommt die meldung falsch

    sende ich aber erst einen falschen code bekomme ich die meldung falsch.

    das muß also was mit diesen <CR><LF> befelen zu tun haben denn wenn ich diese signale vom PC aus sende geht das einwandfrei!

    hat jemand eine ide wie mann die befehle aners verarbeiten kann?

    würde mcih freuen!

    gruß lanic

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Hi,
    der Input Befehl wird ja CR terminiert. Deshalb geht das ja auch beim ersten mal. Bei dem nächsten Durchlauf ist ja noch dein LF im Buffer und klebt am Anfang deines Strings.
    Kannst ja mit ISCHARWAITING schauen ob was im Buffer ist und dann mit INKEY rausfragen (ggf. mit FOR NEXT falls es mehr als ein Byte ist).

    Vielleicht kennt jemand eine Möglichkeit wie mann den Buffer einfach Cleart, unabhängig davon ob was im Buffer ist oder nicht.


    P.S. da versuche ich jetzt schon zum 3. mal die Antwort zu schicken.
    Hab die leider erst vor dem 2. Sendeversuch in der Zwischenablage gesichert

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40
    sowas habe ich mir fast gedacht! das ding hängt also am anfang meines Strings!

    danke dir jetzt versuch ich mich morgen mal mit den neuen befelen die du mir geschrieben hast!

    währe natürlich echt gut wenn mir jemant eine befehl sagen könnte wo mit mann den pufer löscht!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40
    hey klapt jetzt alles danke nochmal diese erfolgserlebnisse sind einfach spitze!

    hir nochmal der code

    Code:
    $regfile = "2313def.dat"                                    'AT90S2313
    $crystal = 3686400
    $baud = 9600                                                'Quarz: 3.6864 MHz
    Ddrd = &B1011110                                           'Ausgang konfigurieren
    Portd = &B0100001
    
    Dim A As String * 12
    Dim C As Byte
    
    Cls
    Cursor Off Noblink
    Q:
    C = Inkey()                                                 
    If C = 0 Then
    Goto B
    Else
    Goto Q
    End If
    B:
    Input A
    If A = "Œ8401D16B625" Then
       Cls
      Lcd "Richtig"
      Wait 1
      Goto Q
    Else
      Cls
      Lcd "Falsch"
      Wait 1
      Goto Q
    End If
    End
    ich lese jetzt den speicher einfach aus solange er lehr ist und erst dann gehts weiter.

    wenn noch jemand ne ide hat wie es einfacher geht bin ich dankbar.

    gruß Lanic

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40
    ich habe doch noch ein problem!

    ich bekomme einen string gesentet nachfolgend <CR><LF>

    hier mein code:

    Code:
    $regfile = "2313def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Ddrd = &B0011100
    
    Dim A As String * 12
    Dim B As Byte
    
    
    Do
    Portd.2 = 1
    Portd.3 = 1
    Portd.4 = 1
    
    Neu:
    B = Inkey()
    If B = 0 Then                                              
    Goto Gut
    Else
    Goto Neu
    End If
    
    Gut:
    Input A
    
    If A = "Œ0104f054FA9" Then                                  
      Portd.3 = 0
      Portd.2 = 0
      Waitms 500
    
    Else
    
      If A = "Œ01f3B986CB9" Then                                
          Portd.4 = 0
          Portd.2 = 0
          Waitms 500
          End If
    
    End If
    Loop
    mein problem ist wenn ich die netzspannung trenne und wider einschalte geht nichts resete ich die den chip einmal läuft alles wie geschmiert ich kann mir das nicht erklären.

    kann mir jemand sagen wo mein gedanklen fehler ist?

    danke Nico
    Wer Rechtschreibfehler findet, darf sie behalten.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Das hört sich nach einem Reset Problem an. Wie hast du den Reset beschaltet? Der 2313 läuft ja noch mit 1,8V. Solange deine Netzteilelkos nicht leer sind, läuft der µC noch.
    Kannst ja einen Hardware Reset mit R, C und Diode beschalten oder aber die Brown Out Detection per Fusebit aktivieren und den BODLevel für die verwendete Spannung einstellen.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

Berechtigungen

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