Hallo,
ich fürchte, ich habe ein Problem mit Datentypen in Bascom.
Und zwar fehlt mir der Durchblick, wann ein Byte als Binärwert, und wann
es als ASCII-Wert behandelt wird.
Ich möchte einer Variablen, die als "word" dimensioniert wurde, Teile
eines empfangenen Strings zuweisen.
Dabei bekomme ich die Fehlermeldung "Value larger than string length".
Die relevanten Programmausschnitte sind:
---------------------
Dim Proznr2 As Word
Dim S As String * 5
...
Proznr2 = Left(s , 1) 'Diese Zeile wird als "Value larger than
string length" bemängelt.
---------------------
Das verstehe ich nicht. Warum kann ich nicht mit "Left" aus einer
Variablen eine oder zwei Stellen rausnehmen und einer "Word"-Variablen
zuweisen ?
Gruß Tilmann
Hier nochmal der ganze Code, falls nötig:
____________________________________________________
$regfile = "m644Pdef.dat"
$crystal = 1000000
$baud = 300
Dim Proznr As Word
Proznr = 1
'Prozessornummer dieses Prozessors
Dim Proznr2 As Word
'Prozessornummer die empfangen wird
Dim S As String * 5 'String mit
5 (+1) Byte Länge
On Urxc Onrxd 'Bei Empfang
Interrupt aufrufen!
Enable Urxc 'URXC ist
ein Interrupt
Enable Interrupts 'Interrupts
insgesamt einschalten
Main:
If Len(s) > 4 Then 'Wenn 5
Zeichen eingegangen sind ...
Print "empfangen wurde: " '
Print S 'schicke sie
kontrollhalber zurück
Proznr2 = Left(s , 1)
'Kontrolliere auf Übereinstimmung
S = ""
End If
Goto Main
'Interrupt:-----------------------------------
Onrxd:
S = S + Chr(udr) 'neu
empfangenes Byte anhängen
Return
In ein Word kannst Du nur einen numerischen Wert "einfügen". Versuche mal mit "VAL" aus dem String-Zeichen einen numerischen Wert zu machen: Proznr2=Val(Left s,1)) gez. Leistungsspochtler
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.