PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Variable ändern



Neutro
24.10.2009, 15:09
Hallo Bascomer,

ich bin dabei eine Messbereichsumschaltung zu proggen. Dabei soll der
Messbereich entweder per Taster (up, down) oder von einer Windows Anwendung änderbar sein. Wenn ich jedoch den A=inkey () einkommentiere funktioniert die Messbereichsänderung per Taster nicht mehr aber die Verstellung vom PC aus. Kommentiere ich den inkey aus funktionieren die Taster wieder wie gewünscht. Beides zusammen geht irgendwie nicht. Ich hoffe ihr habt eine Lösung parat....
Hier die relevanten Stellen des Code:

Do
'A = Inkey()

'-------------------------------------
'Messbereichsumschaltung per Taster

If Pinc.0 = 0 Then
Waitms 200
Incr A
End If

If Pinc.1 = 0 Then
Waitms 200
Decr A
End If

'--------------------------------------
'Begrenzung der Variable


If A > 53 Then
A = 53
End If

If A < 49 Then
A = 49
End If


If A >= 49 Then

'---------------------------------------
'Zuordnungen

If A = 49 Then
Lowerline
Lcd " 1V "
Portd.2 = 1
Portd.3 = 0
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
End If

If A = 50 Then
Lowerline
Lcd " 2V "
Portd.2 = 0
Portd.3 = 1
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
End If

If A = 51 Then
Lowerline
Lcd " 5V "
Portd.2 = 0
Portd.3 = 0
Portd.4 = 1
Portd.5 = 0
Portd.6 = 0
End If

If A = 52 Then
Lowerline
Lcd " 10V "
Portd.2 = 0
Portd.3 = 0
Portd.4 = 0
Portd.5 = 1
Portd.6 = 0
End If

If A = 53 Then
Lowerline
Lcd " 20V "
Portd.2 = 0
Portd.3 = 0
Portd.4 = 0
Portd.5 = 0
Portd.6 = 1
End If

End If

Loop

End

Wie man sieht versuche ich immer die Variable A zu ändern die als Byte def. ist.

Danke schon mal im vorraus

Neutro

PicNick
24.10.2009, 17:38
Nun, wenn inkey() aktiv ist, wird jeder tastendruck sofort beim nächsten inkey() wieder überschrieben. Dadurch bewirken die Tasten dann nix.
Wie soll es denn sein ?
Immer, wenn der PC 1-5 schickt, soll das der neue Messbereich sein, den man mit den Tasten aber dann +- setzen kann (bis eben von PC wieder was kommt)
Ist das so ?

Dann:


DIM temp as BYTE

DO
temp = inkey()
if temp <> 0 then ' Ist was gesendet worden ?
A=temp ' ja (sonst bleibt A, wie es ist)
end if
---- der rest wie oben ----

Neutro
24.10.2009, 17:48
Hallo PicNick,

erstmal danke für deine Antwort.
Die Funktion sol lfolgende sein, der Messbereich soll vom PC aus änderbar
sein aber auch von den Tasten.
Beispiel: Ich sende vom PC aus "messbereich 10V" dann soll der entsprechende Messbereich aktiviert werden. Verstelle ich nun den Messbereich per Tastendruck auf den 2V Messbereich so soll dieser dann aktiv sein, bis er wieder entweder per Tastendruck oder vom PC aus geändert wird.
Ich konnte deinen Code bisher noch nicht ausprobieren da ich jetzt gleich weg muss, werde mich dann aber morgen Vormittag auf jeden Fall wieder melden.

MfG

Neutro

Neutro
25.10.2009, 09:22
So, da bin ich wieder.

Ich habe deinen Codeschnipsel in meinem Programm eingefügt, alles funktioniert jetzt so wie ich es vorgesehen hatte.

Vielen Dank für deine Hilfe PicNick!

MfG

Neutro