Forum: Mikrocontroller und Digitale Elektronik Bascom Datentypen


von Tilmann (Gast)


Lesenswert?

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

von Leistungs-Spochtler (Gast)


Lesenswert?

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

von Tilmann (Gast)


Lesenswert?

Hallo Leistungsspochtler,

prima, danke, val hat geholfen !

Gruß Tilmann

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
Noch kein Account? Hier anmelden.