C# program – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# program – .NET – Fórum – Programujte.comC# program – .NET – Fórum – Programujte.com

 

Tomas.P0
Newbie
13. 7. 2012   #1
-
0
-

Zdravím.

Zadání: http://www.youtube.com/watch?v=fpwuqDVwcsM&feature=player_embedded

Přílohy: http://czshare.com/2855804/P%C5%99%C3%ADlohy.zip

Postup:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        AnalyzerThread analyze = new AnalyzerThread();
        Recorder rec = new Recorder();
        public Form1()
        {
            InitializeComponent();
            //změna rozsahu osy X1
            chart1.ChartAreas[0].AxisX.Minimum = 0;
            chart1.ChartAreas[0].AxisX.Maximum = 2000;
            //změna rozsahu osy Y1
            chart1.ChartAreas[0].AxisY.Minimum = -1;
            chart1.ChartAreas[0].AxisY.Maximum = 1;
            //změna rozsahu osy X2
            chart2.ChartAreas[0].AxisX.Minimum = 0;
            chart2.ChartAreas[0].AxisX.Maximum = 500;
            //změna rozsahu osy Y2
            chart2.ChartAreas[0].AxisY.Minimum = 0;
            chart2.ChartAreas[0].AxisY.Maximum = 0.6;
        }
        //graf pro vykreslení zvuku v časové oblasti
        public void vykresli(LinkedList<float> samples_measured)     
        {
            foreach (float sample in samples_measured)
            {
                if (chart1.Series[0].Points.Count > 1000) // ptám se, zda-li řada vzorků neobsahuje více než 1000 vzorků, které chci zobrazit na ose X    
                    chart1.Series[0].Points.RemoveAt(0); // odstranění vzorku z řady
                    chart1.Series[0].Points.AddY(sample); // přidávání dat do grafu         
            }
            analyze.AddSamples(samples_measured.ToArray());
        }
        //graf pro vykreslení frekvenčního spektra
        private double step_WK;
        public void vykresli_fft(double[] samples_fft) // přichází pole s oboustranným FFT spektrem, proto níže /2 (stačí pouze jednostranné spektrum)                  
        {
            if (chart2.InvokeRequired) // zde se ptám, jestli je graf pro FFT volán z jiného vlákna, podmínka platí, když metodu volám z jiného vlákna
            {
                FFTSamplesProcessed new_handler = new FFTSamplesProcessed(vykresli_fft); // vytvářím nový objekt stejného typu, jak je událost, kde mám vypoč. FFT
                this.Invoke(new_handler, new object[] { samples_fft }); // zde do nového objektu dám data, které posílá druhé vlákno a současně vyvolávám tuto metodu na vlákně, na kterém běží vykreslování
            }
            else
            {
                chart2.Series[0].Points.Clear(); // vymazání grafu
                for (int i = 0; i < (samples_fft.Length / 2); i++)
                {
                    chart2.Series[0].Points.AddXY((i * step_WK), samples_fft[i]); // vykreslování po bodech                       
                }
            }
        }
        //tlačítko pro uzavření aplikace
        bool appRunning = false;
        private void button1_Click(object sender, EventArgs e)
        {
            if (appRunning)
                rec.StopRecording();
            if (analyze.IsAnalyzerRunning)
                analyze.Stop();
            Application.Exit();
        }
        //tlačítko pro zastavení nahrávání
        private void button2_Click(object sender, EventArgs e)
        {
           button2.Enabled = !button2.Enabled;
           button3.Enabled = true;
           chart1.Enabled = false;
        }
        //tlačítko pro spouštění nahrávání
        private void button3_Click(object sender, EventArgs e)
        {
           button3.Enabled = !button3.Enabled;
           button2.Enabled = true;
           chart1.Enabled = true;
        }
        //tlačítko pro FFT
        private void button4_Click(object sender, EventArgs e)
        {
            if (button4.Text == "START")
            {

                analyze.Start();
                button4.Text = "STOP";
            }
            else
            {
                analyze.Stop();
                button4.Text = "START";
            }
        }
        //vybrané zařízení
        private int mic_id = 0;
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.mic_id = comboBox1.SelectedIndex;
        }
        //nastavení limitu
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            numericUpDown1.Maximum = 100;
            numericUpDown1.Minimum = 0;
        }
        //zisk
        private void progressBar1_Click(object sender, EventArgs e)
        {
            
        }
        //napěťová špička
        private void label1_Click(object sender, EventArgs e)
        {
            
        } 
    }
}

P.S.: funkčnost 0!

Nahlásit jako SPAM
IP: 88.100.249.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Program — založil Jan Burant

C# program — založil Tomas.P

Program do C++ — založil elis5

Program — založil dakine

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý