Hallo!
ich habe folgendes Problem zu lösen.
Ein C Programm läuft auf eine Board mit digitalen Eingängen (inputs) und Ausgängen. Ich muss die Eingänge beobachten.
Es gibt eine Reihe von 8 digitalen inputs, die auf 0 oder auf 1 sind. Pro Input habe ich ein bit:
char input_zustand:
0000 0000: alle input auf 0
1111 1111: alle inputs auf 1
0001 0001: erster und vierter Eingang sind auf 1.
Ich muss ein Programm laufen lassen, aber nur, wenn ein bestimmter Zustand der inputs gegeben ist. Welcher Zustand das ist, wird vom Benutzer in einer Maske festgelegt.
und zwar könnte er zu Beispiel eine 1 eingeben, wenn der Zustand 1 sein muss
Eine 0, wenn der Zustand 0 sein muss. und eine 2, wenn der Zustand egal ist.
Allerdings komme ich mit dieser lösung dann nicht mehr mit einer bitmaske aus, weil ich nicht mehr 0 oder 1 habe. ich muss wohl ein array[8] nehmen.
Ich hätte gern soetwas gehabt:
if (input_zustand) & (input_maske)
programm_laufen_lassen();
else
meldung_voraussetzungen nicht erfüllt();
Aber mit einer Maske aus 0,1 udn 2 geht es natürlich nicht.
Ich kann natürlich in einer Schleife prüfen lassen, ob input_maske[x] und (input_zustand&2^x) übereinstimmen, aber vielleicht geht es eine elegantere Lösung?
Hat jemand eine Idee, wie man es am schlauesten machen könnte?
Vielen Dank im Voraus, falls jemand eine Idee hat,
frenchcancan