LibNoDave Bitzugriff...

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
527
Zuviel Werbung?
-> Hier kostenlos registrieren
Will von VB.Net mit LibnoDave Bit's lesen und schrieben. Würde dazu gerne die Bit Funktionen von LibNoDave verwenden. Es funktioniert aber irgendwie nicht, kann mir jemand sagen ob Ich die Funktion richtig verwende:

retv = myDaveConnection.readBits(libnodave.daveBlockType_DB, dbNummer, readByte * 8 + readBit, 1, Nothing)

bit = myDaveConnection.getU8()


Das Problem ist, die Funktion readBits liefert -128 bei einer verbindung über die Siemens DLL's als rückgabewert, und bei verbindung via TCP 33280 als rückgabewert. Die Connect funktionen von LibNoDave laufen alle sauber durch.
 
Sorry...

Sorry hatte falsche Rack ausgewählt. nun bekomme ich die 5 -> AdressOutOfRange... aber der DB existiert!! Und ist auch groß genug!
 
Ok...

Ok, müsste aber trotzdem funktionieren, da readByte=1 ist und er dann das achte bytes lesen würde. gut ich kann das auch auf davereadbytes umstellen! Aber die Funktion DaveWrtiteBits brauche ich, da ich nur ein bit und nicht ein ganzes byte zurückschreiben möchte!!!

Aber auch dave ReadBytes liefert mir als reval 5!!! Wieso???
 
Wha... Problem gefunden....

Ich habe readBytes mit blocktype_db aufgerufen, welches eine konstante mit dem wert 10 ist, anstats davedb, welches 132 ist benutzt... nun gehts...
 
Kann mir jemand sagen wie Ich davewritebits benutze um nur ein bestimmtes bit in einem byte zu setzen, und die restlichen unberührt zu lassen???
Eigentlich genau gleich wie daveWriteBytes. Die einzigen beiden Unterschiede liegen erstens in der Berechnung der Bitadresse, aber das ist ja im ersten Post bei daveReadBits schon korrekt gelöst, und zweitens in der (momentanen) Einschränkung von daveRead/WriteBits, immer nur ein einzelnes Bit bearbeiten zu können.

Die Beschränkung wird übrigens von den CPUs und nicht vom Protokoll verursacht, und da sich das in Zukunft ändern könnte, hat Zottel den Parameter für die Anzahl trotzdem implementiert.


Gruß Axel
 
Zurück
Oben