2017-10-21 15 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

이 코드

  • 에 대한 waveSource 무엇인가에 대해 내가 가지고있는 몇 가지 질문입니다 - 왜 하나는 당신이 COM 포트에서 데이터를 수신 할 때마다 생성되는?
  • waveOut에서 InitPlay을 한 번만 호출해야하지만 수신 된 모든 오디오 버퍼에서 Play을 호출해야합니다.

내가 쓴 오디오를 WaveFileWriter과 함께 WAV 파일에 작성하는 것이 좋습니다. 그런 식으로 규칙적인 웨이브 에디터에서 그것을 검사하고 예상되는 신호가 포함되어 있는지 확인할 수 있습니다.