Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > Hallo Detlef, > > > > > folgende Logik will sich mir nicht erschließen: > > > > > > Sensor[pos] = (modul*15)+1-1+bit; > > > > > > In obiger Zeile könnte man meinen, das +1 und -1 ist überflüssig. Ist es auch, solange die Variable > > > "modul" nicht "0" wird. Dann wird das Ergebnis nämlich auch 0 und nicht "bit" wie es mathematisch > > > korrekt wäre und es auch erwartet wird. Füge ich +1und -1 ein, funktionierts. > > > > > > Kann das jemand erklären? > > > > Ich kann das leider nicht nachvollziehen. > > Egal, ob mit oder ohne "+1-1", die Berechnung ist immer korrekt. > > Welche Datentypen haben die von Dir verwendeten Variablen? > > Evtl. hast Du auch ein kleines Testprogramm, bei dem der Fehler bei Dir auftritt. > > Ansonsten werde ich Dir ohne weitere Infos leider nicht helfen können. > > > > MfG André H. > > > > Hallo und vielen Dank für Eure Unterstützung. Anbei die komplette Funktion. Die Variablen in dieser > Funktion sind vollständig vom Typ int. Eine logische Erklärung für das +1-1 konnt ich wirklich nicht > finden, sonst hätt' ich das FORUM ja auch nicht bemüht. > > Also die Funktion ruft der Reihe nach alle bei der Initialisierung gefundenen > Module auf, sucht nach aktivierten Eingängen und schreibt den gefundenen Eingang absolut in > "Sensor", und zwar je nach Variable "tog" (kann 1 oder 0 werden) von 0 bis MaxEing oder von > MaxEing nach MaxEing*2. Eine weitere Funktion, bedient von einem weiteren Thread, arbeitet dann > den jeweils anderen Teil von Sensor ab. Allerdings bringt das 0-te Modul im Gegensatz zu den > anderen Modulen keine Eingangssignale solange das +1-1 fehlt. > > Getestetes rudimentäres Testprogramm ist momentan schwierig. Habe meine Ersatz C-Control > zerschossen (ging ganz leicht mit 12V auf einen Eingang) und die Haus Control mal testweise > ausbauen birgt die Gefahr eines riesen Ärgers mit meiner Family > > Viele Grüße > > Detlef > > Globale Variable: > byte Sensor[MaxEing*2]; // Sensorvorrat, Anzahl Eingänge pro Sequenz > > function readHaus(int modueb, byte tog) returns byte // (Moduluebersicht und Toggle) > { > int modul, bit, eingang; > byte pos; > modul=0; > pos=0; > > if tog pos=MaxEing; > > while modueb // ... solange es nichtabgefragte Module gibt > { > if modueb%2 // ... gucken, ob das nächste da ist > { > eingang=dwmodule.getDIMM(modul); // ... dann deren Eingänge abfragen > if eingang > if eingang !=dwmodule.getDIMM(modul) // Sicherheitsabfrage nur wenn > eingang=0; // positives Eingangssignal > > bit=0; > > while eingang // ... solange irgendwo ein Bit "high" ist > { > if eingang%2 // ... gucken ob das nächste "high" ist > { > <b> Sensor[pos] = (modul*15)+1-1+bit;</b> > if pos < (MaxEing*(1+tog)) pos=pos+1; > } > bit=bit+1; // ... nächstes bit abfragen > eingang = eingang shr 1; // ... nächsten Eingang abfragen > } > } > modueb=modueb shr 1; // ... nächstes Modul abfragen > if modueb%2 // ... gucken, ob das nächste da ist > { > eingang=dwmodule.getDigi(modul); // ... dann deren Eingänge abfragen > if eingang > if eingang !=dwmodule.getDigi(modul) // Sicherheitsabfrage nur wenn > eingang=0; // positives Eingangssignal > > bit=0; > > while eingang // ... solange irgendwo ein Bit "high" ist > { > if eingang%2 // ... gucken ob das nächste "high" ist > { > Sensor[pos] = modul*15+3+bit; > if pos < (MaxEing*(1+tog)) pos=pos+1; > } > bit=bit+1; // ... nächstes bit abfragen > eingang = eingang shr 1; // ... nächsten Eingang abfragen > } > } > modueb=modueb shr 1; // ... nächstes Modul abfragen > modul=modul+1; // ... nächste Modulreihe befragen > } > Sensor[pos]=LEER; // ... Endwert in Sensor schreiben > }
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB