Autor Beitrag
Killerregenwurm
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 12.02.09 21:29 
Hallo,

ich bin gerade dabei mir eine Applikation zu schreiben, mit der ich Lichtanlagen steuern kann.

Dies hatte ich shcon mehr schlecht als recht in dekphi zusammengebastelt allerdings ist mir aufgefallen, dass es mit C# einfacher geht und dies nebenbei aktueller ist.

C# habe ich mir jetzt selber beigebracht meistens mit learning by doing.

Mein Ziel ist es, die Amplituden von bis zu 30 Durchgängen zu Speichern. Ich habe die DetectFrequency dazu benutzt um die Werte des Frequenzspektrums abzuspeichern:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
    
        private static float[] Spektrum = new float[200];
        private static float[][] Amplituden = new float[30][];
        public static void setAmplitudendurschnitt()
        {
            for (int i = 0; i < 200; i += 1)
            {
                Spektrum[i] = _Visual.DetectFrequency(_Stream, i*8, i*8 + 7false);
            }

            for (int n = 0; n < Amplituden.Length; n++)
            {
                Amplituden[n] = Spektrum;
            }
        }


mit einer anderen Funktion kann ich nun die Werte auslesen, die in Amplitude[] gespeichert sind.

Mein Problem ist nun, dass dies recht lange dauert.

Bisher habe ich einen timer( interval 40ms) um mit Visuals aus bass.net ein Spektrum anzeigen zu lassen.

Allerdings wird, wenn ich die SetAmplitudendurschnitt() im selben timer laufen lasse, die Ausgabe des Spektrums immer wiede runterbrochen. Auch wenn ich meine Funktion nur alle 8 durchläufe starte sieht man dies trotzdem im Spektrum Vis.

Gibt es eine möglichkeit dies getrennt von einander laufen zu lassen? mein Rechner ist noch lange nicht ausgelastet deswegen kann ich das "Stocken" nicht ganz nachvollziehen.

Habe es schon mit nem zweiten Timer und BackgroundWorker versucht. Allerdings ohne erfolg.

Wenn ihr noch weitere infos braucht fragt einfach.

Gruß
Killerregenwurm