PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : K8055 Digital I/O einzeln Ansteuern? (¿UINT8?)



elvis
19.05.2007, 15:49
Hallo

Wie Bereits in einigen anderen Treads erwähnt, experimentiere ich mit
dem k8055 und x-plane (Flugsimulator). Dies funktioniert auch schon ganz
gut. Nun habe ich das problem das ich in C++ die Digitalen Ports nicht
richtig einzeln ansteuern kann. Ich habe gelesen, dass der Wert in UINT8
angegeben wird. allerdings werde ich aus diesem Wert nicht schlau. MIt
ReadDigitalChannel(1) kann ich immer den ersten Kanal abfragen, das
funktioniert. MIt ReadDigitalChannel(2) kann ich den 2 Kanal aber nicht
ansprechen. Ich habs binär Probiert DigitalChannel(01000000) und Hex
DigitalChannel(40) leider auch vergeblich. Kann mir jemand sagen, wie
ich die Ports einzeln ansteuern kann?

mfg

sascha

elvis
20.05.2007, 01:44
Ich habs raus. Zumindest mit ReadAllDigital(). Es handelt sich um einen
5 Stelligen Binärwert, dr haber vorher noch in hex umgerechnet werden
muss.

bin: 00001 hex:1 kanal:1
bin: 00010 hex:2 kanal:2
bin: 00100 hex:4 kanal:3
bin: 01000 hex:8 kanal:4
bin: 10000 hex:10 kanal:5

womit ich in c++ mit if(ReadAllDigital() == 4) kanal 3 auslese.
wie ich mit ReadDigitalChanel() gezielt einzelne Kanäle auslese weiss
ich allerdings immer noch nicht. ist auch nicht mer wichtig,
funktioniert ja auch mit ReadAllDigital(), hätte aber für das Verstädnis
der Karte geholfen.

mfg

sascha

robocat
20.05.2007, 02:45
hi elvis,

habe von C++ wenig ahnung, aber du verwendest ja die mitgelieferte library. ReadAllDigital() liefert dir einen wert (ausgabe dezimal, im rechner is aber ja alles binär). soweit ich weiß, gibt es 8 ports oder?

binär geht so:
00000001 =1 = kanal 1 gesetzt
00000010 = 2 = kanal 2 gesetzt
00000011 = 3 = kanal 1+2 gesetzt
00000100 = 4 = kanal 3 gesetzt
00000101 = 5 = kanal 1+3 gesetzt
...

du rechnest also beim letzten wert: 2 hoch 2 + 2 hoch 0 (das ist 4+1) =5.

10000001 ist also 2 hoch 7 + 2 hoch 0. das ist 129. also: 2 hoch (stelle einer 1) wobei die erste stelle 0 ist, die letzte (bei 8 bit) 7.

grösste darstellbare zahl ist damit (8bit) 128+64+32+16+8+4+2+1 (binär ist das dann 11111111) ist 255.

sagen wir du bekommst ein 123. das ist dann 64 (128 wär möglich aber is ja schon zu groß) + 32 (dann sinds 96) + 16 (->112) + 8 (->120) + 2 (4 wäre schon zuviel, wären dann ja 124 - so sinds 122) + 1 = (schwupp) 123.

dein binärcode wäre damit 01111011. port 8 und port 3 sind also 0, alle anderen gesetzt.

hilft?