2017-10-21 7 views
1

私のc#コードは以下の通りエラーは出ませんがサウンド出力もありません。私はパテを使用し、COM14ポートからのデータストリームを監視しました。これはNAudioで初めてのことです。私は間違って何をしたのですか。NAudioストリームプレーヤーなしサウンド出力

WaveInEvent waveSource; 
    WaveOut waveOut = new WaveOut(); 
    WaveFormat format = new WaveFormat(8000, 16, 1); 

    public int audioCounter = 0; 
    public byte[] buffer; 
    private BufferedWaveProvider _bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat(16000, 16, 1)); 

    private void btn_scan_Click(object sender, EventArgs e) 
    { 
     string temppoteName = "COM14"; 
     SerialPort tempSerialPort = new SerialPort(temppoteName, 57600, Parity.None, 8, StopBits.One); 
     tempSerialPort.Open(); 
     tempSerialPort.DataReceived += new SerialDataReceivedEventHandler(comPort14_DataReceived); 
    } 
    private void comPort14_DataReceived(object sender,SerialDataReceivedEventArgs e) 
    { 
     SerialPort sp = (SerialPort)sender; 
     string indata = sp.ReadExisting(); 
     Console.WriteLine("Data Started Reciving :" + sp.PortName); 

     waveSource = new WaveInEvent(); 
     waveSource.WaveFormat = new WaveFormat(8000, 16, 1); 
     waveOut.DesiredLatency = 100; 

     int x = sp.BytesToRead; 
     buffer = new byte[x]; 
     sp.Read(buffer, 0, x); 
     _bufferedWaveProvider.AddSamples(buffer, 0, x); 

     if (audioCounter == 0) 
     { 
      waveOut.Init(_bufferedWaveProvider); 

     } 
     waveOut.Play(); 


     ++audioCounter; 
    } 

答えて

1

があり、あなたのコード

  • ため波源何について私が持っているいくつかの質問です - と、なぜ1を使用すると、COMポートからデータを受信するたびに作成されていますか?
  • waveOutでInitPlayを一度だけ呼び出す必要がありますが、受け取ったすべてのオーディオバッファにはPlayを呼び出しています。

このような問題を解決するには、受け取ったオーディオをWaveFileWriterというWAVファイルに書き込むことをお勧めします。そうすれば、通常の波形エディタでそれを調べ、期待する信号が含まれているかどうかを確認できます。

関連する問題