-
        

Ergebnis 1 bis 4 von 4

Thema: Problem mit Buffered serialin

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.11.2005
    Beiträge
    21

    Problem mit Buffered serialin

    Anzeige

    Habe ein problem mit dem Empfangen von einem String.

    Ich bekomme immer nur zwei zeichen. das heisst er liest nur 2Bytes und der rest ist irgendwo verschwunden.

    habe folgendes drin aber es funktioniert nicht.

    Config serialin = buffered, size = 20

    er hat trotzdem immer nur 2 zeichen im Buffer, obwohl ich ihm ja platz für 20 gebe. brauch übrigens maximal 5zeichen = 5Byte

    habe ich noch etwas vergessen??

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Naja, wie liest du die Daten ? Lass gucken !
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.11.2005
    Beiträge
    21
    Code:
    Config Serialin = Buffered , Size = 20                      
    Enable Interrupts
    .
    
    .
    
    If Ischarwaiting() <> 0 Then 
    Zeichen = Inkey()
       If Zeichen = 10 Then
             B = 1
             Buf = ""
       Else
          If B = 1 Then
             If Zeichen = 13 Then
                Buf = Buf + Chr(0)
                Eingang = Val(buf)
                B = 0
                Print "eingang" ; Eingang;
             Else
                   Buf = Buf + Chr(zeichen)
             End If
          End If
       End If
    End If
    mit inkey() lese ich aus, aber ich habe immer nur 2 zeichen auch wenn ich mehr sende
    ich denke irgdenwie akzeptiert er meine Buffergrösse nicht, weil ich kann dort angeben was ich will er hat immer nur 2Byte


    edit:
    kann es möglicherweise daran liegen?
    The M32 USART may not work with Bascom Buffered support as the Mega32
    has a 2 byte FIFO buffer. I have never used it , but maybe another group
    member have tested it

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Ohne Buffer mit timeout ein Auszug was läuft:

    Code:
     
    Dim Char_vergleich(20) As Byte
    Dim Char_da(20) As Byte
    Const Timeoutfaktor=100            '100mSek
    
    
    
     Charzaehler = 0                       'Prüfen auf Startstring und IO / Startstring einlesen
      Timeout = 0
      Do
        Hole_char = Ischarwaiting()                             'RS232 Port auf Daten abfragen
        If Hole_char = 0 Then                                   'keine Daten da
                           Waitms 1
                           Incr Timeout
                         Else                                   'Daten da
                           Timeout = 0
                           Hole_char = Inkey()                  'Byte auslesen
                           Incr Charzaehler                     'Feldzähler hoch
                           Char_da(charzaehler) = Hole_char
                           If Char_da(charzaehler) <> Char_vergleich(charzaehler) Then Charzaehler = 100       'Vergleiche Byte im Startsting
       End If
       If Timeout > Timeoutfaktor Then Exit Do                  'Timeout abfragen
     Loop Until Charzaehler > 8                'Schleife bis alle 8 Byte vom Startstring ausgelesen oder Timeout
     If Charzaehler <> 9 Then
                          Datenuebergabe_rs232 = Fehler_im_startstring       '10
                          Exit Sub
                         End If
    Gento

Berechtigungen

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