- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: RS232 Übertragung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    51
    Beiträge
    180

    RS232 Übertragung

    Anzeige

    E-Bike
    Hallo,

    ich habe zum Testen folgendes Programm geschrieben:

    $crystal = 7372800

    $baud = 9600


    Dim A As Integer

    Do
    Input "Input Number: " , A
    Print " Number was " ; A
    Loop

    End

    Es läuft auf einem Mega 8.

    Mein Problem:
    Es werden maximal 6 Zeichen, so wie ich sie auf der Tastatur eingebe, im Terminalfenster wiedergegeben, dann ist Schluss.

    Woran liegt das?

    Tobias

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    evtl. liegts daran, das in ein Integer eingelesen werden soll, und da geht nicht mehr rein.
    Kann sein das Bascom das hier schon eingrenzt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    29.07.2006
    Ort
    Heidenheim
    Alter
    64
    Beiträge
    40
    Laut Bascom - Hilfe ist integer ein 2-Byte Wert, so wie auch Word. Allerdings mit Vorzeichen. Wertebereich also -32,768 bis +32,767.
    Also wird's, meiner Meinung nach, nicht an der Größe des Typs integer liegen.
    Ich hatte ähnliche Probleme und hab es dann mit
    If IsCharWaiting() = 1 Then
    usw. hinbkommen.
    Versuch doch mal
    Code:
    $crystal = 7372800 
    $baud = 9600 
    Dim A As Byte 
    Do 
      If IsCharWaiting() = 1 Then 'serielle Schnittstelle nur auslesen, wenn auch was drin steht
        Input "Input Number: " , A 
        Print " Number was " ; A 
      end if
    Loop

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    51
    Beiträge
    180
    Ja, das wars!
    Danke

    Tobias

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Ort
    Solingen
    Beiträge
    101
    Hallo
    ich habe nun ein ähnliches Problem.

    Ich sende nacheinander kurze Zahlenwerte an meinen Avr. Die ersten 3 Zahlen (zb. 14 "lange Pause" 85 "lange Pause" ...) werden dabei auch einwandfrei erkannt und zurückgegeben. Ab der vierten Zahl passiert aber gar nichts mehr, als wenn mein AVR einfriert. Jetzt hilft nur noch ein Reset. Danach funktioniert das Programm wieder nur bis zur vierten Zahl.
    Wo könnte denn hier der Fehler liegen?


    mfg Omnikron



    Code:
    $crystal=16000000
    $regfile="m32det.dat"
    $baud=9600                 'oder 38400
    
    Dim A as Byte               'oder integer, string*10 , ...
    
    do
       if ischarwaiting()=1 then
          input A
          print A;
       endif
    loop

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Du hast ja A als Byte deklariert also max. 255.
    Der Input Befehl wird mit CR also Enter terminiert.
    Aus deiner Beschreibung geht nicht ganz hervor ob und wann du bei deiner Eingabe ein CR schickst.
    Desweiteren wird mit der Enter Taste nach dem CR(&H0d) noch ein LF(&H0A) geschickt.
    Den LineFeed hast du dann bei der nächsten Input Abfrage noch vor der neuen Eingabe im Buffer hängen.
    Gruß RePi!


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

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2004
    Ort
    Solingen
    Beiträge
    101
    hi
    danke für deine schnelle antwort.

    normalerweise habe ich ein das "A" als String deklariert.
    Ein CR habe ich nie geschickt. Ausschließlich meine Zahlen, bestehend aus zwei ziffern. Hab das jetzt mal im Programm geändert, nun scheint es zu funktionieren. Also ist CR unf LF unbedingt notwendig ja?

    mfg
    Omnikron

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Ja, für den Input befehl schon und zwar nur CR.
    Das LF kann, wie schon erwähnt, probleme machen, weil es am Anfang des nächsten Strings hängt.
    Kann also nicht schaden, wenn man vor der Input Abfrage weiß, daß nichts ungewolltes schon im Inputbuffer steckt.
    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
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad