Für dieses Forum muß Javascript im Browser aktiviert werden!
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 Michael, > > > Eben, das tut so richtig weh. Aber das war für mich im Augenblick die einzige gangbare Lösung. Es ist halt so, dass ich > > ein Hauptprogramm exec.c2 und unter anderem eine Benutzerschnittstelle userint.c2 haben wollte. Das UI steuert > > das rblcd und das keypad an. Wenn ich nun mit der Tastatur den exec stoppen möchte (durch Eingabe eines Befehls), > > dann muss ich letztlich Zugriff auf exec haben -> userint muss also später kommen als exec. Andererseits kann dann > > exec nicht mehr auf userint zugreifen (z.B. um den Status anzuzeigen). > > > > Es gibt noch Möglichkeiten, dies hinzubekommen: Man müsste userint.c2 aufteilen in einen Steuer- und einen > > Anzeigeteil, also control.c2 und display.c2 und dann eine Reihenfolge display < exec < control konstruieren. Oder man > > teilt exec auf in mehrere Teile und bettet dann userint ein: exec1 < userint < exec2. > > Prinzipiell kann man ein Programm immer so gestalten, daß man mit > einem Single-Pass-Compiler keine Probleme bekommt. > Dabei sollten "ganz oben" z.B. alle globalen Definitionen stehen (Variablen und Konstanten) > Nach unten hin kommen dann die jeweils "übergeordneten" Routinen. > Wenn es nur darum geht, einen Thread anzuhalten, kann man dies über den Umweg > einer globalen Variabel, welche im zu steuernden Thread überwacht wird. > Das sinnvollste wäre, Dein Programm generell so aufzuteilen: > - globale Variablen (nennen wir es mal var.c2) > - exec.c2 > - userint.c2 > (- evtl. main.c2) > exec.c2 schreibt in global definierte Variablen in var.c2 alle nötigen Werte und Zustände. > Das Modul userint.c2 hat Zugriff auf exec.c2 und var.c2. Es kann also auf exec.c2 Einfluß nehmen. > userint.c2 hätte zugleich die Aufgabe, sämtliche Displayausgaben zu übernehmen, was > schließlich nur allzu logisch wäre, da das Display eher dem Userinterface zuzuordnen wäre. ;-) > > > > Hintergrund ist: Ich habe mir einen Konverter geschrieben, der Java in C2 umsetzt. Das funktioniert leider nicht > > allgemein, sondern mit ein etwas Vorbereitung auf Java-Seite (kein new, kein ++/--, kein switch-case usw.). > > Naja, "--" und "++" läßt sich äußerst einfach konvertieren. ;-) > Auch switch läßt sich sehr einfach umschreiben, so daß ein Konverter ein "switch" in Java (oder C) > sehr einfach in ein identisch funktionierendes Konstrukt in C2 umwandlen kann. > Als kleines Beispiel: > <code>switch (xyz) > { > case 0: > tuedies(); > break; > case 54": > tuedas(); > break; > case 99: > tuejenes(); > break; > }</code> > > Das kann man ganz leicht zu folgendem konvertieren: > <code> > if xyz==0 > { > tuedies(); > } > else if xyz==54 > { > tuedas(); > } > else if xyz==99 > { > tuejenes(); > } > </code> > Was anderes macht ein C- oder Java-Compiler daraus auch nicht. > > > Damit habe ich das ganze Gerät (CC2, Reglerboard, Tastatur, Anzeige, Rel8PCF) emuliert, und nun habe ich den > > Code eben vollständig auf C2 konvertiert. Die Programmierung in Java geht mir leichter von der Hand, und ich kann > > da effizienteres Debugging machen. > > Ich würde persönlich diesen Umweg eher nicht gehen. ;-) > Denn, was in der einen Programmiersprache optimal ist, kann in der anderen > im schlimmsten Fall zum Gegenteil ausarten. > Daher wäre es evtl. besser, in Java bereits den C2-Singel-Pass-Compiler zu beachten, und > die Resourcen dort gleich entsprechend anzuordnen. > > > > Prinzipiell kann man direkt Speicherbereiche senden. > > > Dazu ist natürlich ersteinmal etwas Wissen über die (interne) Funktionsweise und > > > "Speicherverwaltung" der CC2 notwendig. > > > > Dasselbe gilt übrigens auch für rblcd.printlength. Da hätte ich gerne auch die Möglichkeit, aus der Mitte eines byte[] > > zu drucken. > > Kein Problem. > Alle Funktionen, die irgendetwas Senden (egal wohin) und ein Bytearray, sowie eine Längenangabe > als Parameter benötigen, können prinzipiell auf dieselbe Art und Weise behandelt werden, > wie mein Beispiel für hwcom.send(). > > <code>function printmem(byte s[], int Offset, int len) > { > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -10; // Startadresse von buf[] > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -8; // offset > inline vmcodes.VM_ADD; //diese beiden Werte addieren > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -6; // length > inline vmcodes.VM_INLINE_SYSCALL+rblcd.Segment; > inline rblcd._SEND; > }</code> > > Ich habe diese Konstrukt auch mittlerweile getestet. Es funktioniert einwandfrei. ;-) > > > > Ob Du die CCPro verwenden willst, ist Deine Entscheidung. > > > Ich kenne aber einige, die sich an der CCPro versucht haben, aber realativ schnell > > > wieder zur CC2 "zurück" sind. > > > > Vielen Dank für diesen Hinweis. Vielleicht bleibe ich dann lieber mal auf der CC2 - die sieht jetzt etwas anders aus, aber > > vertrieben wird sie noch, oder? > > Hast Du noch die vergossene Unit? Diese wurde durch die unvergossene Unit abgelöst. > Die CC2 gibt es weiterhin, und wird es weiterhin geben. > Sie wird derzeit nur leider nicht aktiv beworben, um die Stückzahlen > der sog. neuen C-Control-Generationen zu fördern. > In Sachen CC2 kann sich aber (im positiven Sinne) evtl. einiges ändern. ;-) > Fakt ist aber, daß die CC2 immernoch die C-Control ist, mit der man umfangreichste > Projekte realisieren kann. Die CC-Pro ist hier kein Ersatz. > Mit der CC2 hat man im ganzen mehr Möglichkeiten. > Und wenn es einmal nicht reicht, dann hat man immernoch die Möglichkeit für einzelne > Routinen auf ASM auszuweichen. > > > > Ich habe ein bisschen die Befürchtung, dass man von Seiten Conrads auf die CC-Pro > > gedrängt wird (wenn man in den Katalog sieht). > > Jein. ;-) > Eine Entwicklung, wie die CC-Pro, kostet einiges an Geld. Dies bekommt > man nur durch entsprechenden Absatz wieder rein. > Und dies erreicht man, marketingtechnisch gesehen, nur durch massivste Werbung. > Im Gegensatz dazu braucht die CC2 derzeit keine so massive Werbung. ;-) > Was ich so höre, verkauft sie sich auch ohne extra Werbung sehr gut. ;-) > Ich allein werde dieses Jahr mehrere hundert Stck. "verarbeiten". > (Bei Conrad (im Online-Shop) wird die CC2 als Topseller geführt, die CC-Pro (noch?) nicht.) > Zu mehr äußere ich micht nicht. ;-) > > MfG André H.