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.![]()
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
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.![]()
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
Ja, das wars!
Danke
Tobias
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
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) ***
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
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) ***
Lesezeichen