Laden...

Forenbeiträge von hlag Ingesamt 8 Beiträge

03.08.2020 - 16:26 Uhr

Hallo Leute,

hier wieder eine dumme Frage. So dumm, dass ich nicht weiß, wie ich da gezielt bei Google suchen muss.

Ich habe eine Windows-Forms-Oberfläche. Diese ist recht trivial, da gibts nur ein paar wenige Buttons.

Jetzt möchte ich aber einige Buttons von der Software erstellen lassen. Präzise: ich baue eine Steuerung für eine Modellbahn. Diese hat Weichen.

Die Weichen sind Objekte mit dem Status geradeaus oder Abzweig.
Die Anzahl Weichen liest sich die Software aus einer Konfigurationsdatei ein, ebenso die Adressen, unter denen diese erreichbar sind.

Jetzt soll für jede Weiche ein Button auf der oberfläche sein: rot für abzweig, grün für geradeaus.
Klickt man drauf, ändert sich die Farbe und die Weiche schaltet sich um

Hab das soweit dann tatsächlich hinbekommen: ich habe die Oberfläche als Referenz an meine Application weitergegeben, von dort an jede einzelne Weiche, dann in der Klasse Weiche Buttons erstellt, die ich über Controls.Add auf die Oberfläche gemalt habe.

Tuts. Scheint mir aber ein unsauberer Weg zu sein. Bei php und Javascript würde ich Leute erschlagen, die grafische Anweisungen im logischen Teil unterbringen....

Gibts da ne Best Practise? Irgendein Buch oder eine Webseite, die ich zum Thema mal durcharbeiten soll?

Wonach kann ich da sinnvollerweise suchen?

(Mein Problem ist, dass ich Autodidakt bin und bei verschiedenen Dingen, selbst wenn ich sie gelöst habe, unter Umständen den Fachbegriff dafür nicht weiß. Und bei irgendwelchen Tutorials stoße ich schnell an die ein oder andere Grenze - Grenze eins: nein, ich brauche keine Erklärung für Objekte, Verweise und Werte-Typen. Die Basics sind mor geläufig. Grenze zwei: wenn ich die Syntax der Beispiele nicht mal mehr verstehe... Irgendwie suche ich noch das Buch "C# für Leute, die nur so doof wie Klaus sind..." )

17.07.2020 - 10:40 Uhr

tuts. Dankeschön. Die n ächsten Fragen kommen, aber da werd ich erst noch was rumexperimentieren.

LG Klaus

15.07.2020 - 16:23 Uhr

Hi TH96,

ja, genau den Thread hatte ich gefunden und finde den Einstieg nicht:

>> protected override void OnPaint (PaintEventArgs e)

Wo kommen denn die PaintEventArgs her? wie generiere ich die, was schreibe ich da rein?

LG Klaus

15.07.2020 - 08:32 Uhr

Hi chilic,
Ich will da ein paar Linien, am liebsten Vektor-Grafiken, und diese umfärben, wenn die Software das entsprechende event sendet.

Lg klaus

15.07.2020 - 00:39 Uhr

Nabend Leute,

Ich krieg nen knoten ins Hirn.
Eigentlich ist es ganz einfach: ich habe eine simple modelleisenbahnstrecke.
Diese möchte ich Grafisch darstellen. Sie besteht aus verschiedenen Blöcken (Abschnitten). Jeder Abschnitt hat ein Kontaktgleis am Anfang und am Ende. Das ist ein Schalter, der meldet, ob was drauf rumsteht oder nicht. Die schaltvorgänge kommen über serialPort rein, ich kann sie auslesen. Jetzt möchte ich die Anlage darstellen , primitivste Mittel würden reichen.
Jeden Abschnitt mit einer farbigen Linie, rot=besetzt, grün = frei.

Die Linie sollen so ungefähr den Streckenverlauf wiedergeben.

Bei Microsoft finde ich nix, was meiner Vorstellung entspricht. Irgendwas mit paintEventArgs. Bei der Erstellung der Grafik gibts noch keine Events....

Hab den Eindruck, dass graphics nen anderen Verwendungszweck hat...
Lg Klaus

07.01.2014 - 15:16 Uhr

Hallo Leute,

die Suche gab nichts her, die vorherige Suche bei Google auch nicht, zumal ich nicht weiß, wonach ich genau suchen kann...

ich versuche das mal zu beschreiben:

Wenn ich einen Sequenzer wie Cubase benutze, dann sehe ich da ne ganze Menge Midischnittstellen an, auf die ich die Signale schicken kann.

Das wären dann zum Beispiel die 8 Ein- und Ausgänge von einem Emagic-USB-Midi-Interface, der Midi-Ausgang von einem Nano-Control (ist auch über USB angeschlossen) usw.

D. h. die Treiber der Geräte stellen eine von Cubase ansprechbare Schnittstelle bereit.

Ich programmiere eine Software, die Midi-Daten empfängt. Diese braucht jetzt eine Midi-Schnittstelle, die über Cubase angesprochen wird. Aktuell frage ich alle Schnittstellen ab, die an meinem Rechner eingestöpselt sind, kann aber keine eigene kreieren.

D. h. ich schicke meine Daten aus Cubase auf einen Ausgang des Emagic-Gerätes, hab von da ein Midi-Kabel auf einen Eingang des Emagic-Gerätes gezogen und frage diesen Eingang mit meiner Software ab. Das sollte einfacher gehen, die Daten sollten im Rechner bleiben können...

Wonach muss ich denn da suchen?

Vielen Dank, viele Grüße,

Klaus

07.03.2013 - 13:19 Uhr

Hallo Leute,

die Ticks der Stopwatch sind nicht identisch mit den Ticks von DateTime.

Stopwatch liefert 200 Ticks, wo DateTime nur einen liefert.

Seltsames Verhältnis, die Anzahl Nullen hatte ich korrigiert, die Zwei konnte ich mir nicht vorstellen...

Jetzt laufen beide Uhren mit einem Versatz von zehn Millisekungen zumindest schonmal gleichsinnig.

Weitere Tests werden folgen...

06.03.2013 - 16:27 Uhr

Hallo Leute,

ich suche eine Funktion, die mir halbwegs solide sowas wie eine Zeitbasis in Millisekunden zur Verfügung stellt.

Mein erster Versuch war

(int)(DateTime.Now.Ticks/10000)

Dies habe ich mit einem Thread abgerufen, der im 10 ms-Rhytmus arbeitet.
Ich erwarte, dass die so ausgegebenen Zeiten um mindestens 10 ms differieren (10 ms sleep + Arbeitszeit eines Zyklus). Ich bekam aber regelmäßig in zwei aufeinanderfolgenden Zyklen die exakt gleiche Zeit

Zweiter Versuch:

Timer in:


namespace Hlag
{
    class hlagTimer
    {


        private static int ms = 0;
        public static void start()
        {
            System.Timers.Timer aTimer = new System.Timers.Timer();

            // Hook up the Elapsed event for the timer.
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

 
            aTimer.Interval = 1;
            aTimer.Enabled = true;

        }

        // Hier folgen die Anweisungen im im Timer
        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            ms += 1;
        }


        public static int get()
        {
            return ms;
        }
    }
}

Hab die Ausgabe gegen DateTime abgeglichen, mein Timer läuft um ca. Faktor 8 langsamer als DateTime.

Nächster Versuch war die Stopwatch, die läuft aber etwa doppelt so schnell wie DateTime.

Nach etwa einer halben Minute hatte ich folgende Werte:

Mein Timer: 2321 ms
DateTime: 36140 ms
Stopwatch: 72263 ms

Bei dem Unterschied zwischen MeinTimer und DateTime könnte man noch einen Rechenfehler um Fakto 10 vermuten, ist aber nicht. Wenn ich das intervall meines Timers auf 100 ms setze, läuft der zu DateTime vergleichsweise parallel (+/- 5 %)

Zum DateTime Gedöhns hab ich im Netz irgendwo gefunden, dass das gute Stück wohl nur im 10 ms Takt aktualisiert würde...

Wo bekomme ich denn eine vernünftige Zeit als Basis her?

Viele Grüße,

Klaus