2011-12-01 2 views
0

MSChart를 사용하여 실시간 플롯 응용 프로그램에서 작업 중입니다 ... NaN에 y 값을 설정해야하지만 오버플로 예외가 발생합니다. 다음은 코드의 일부입니다.MSChart의 NaN 값을 사용하면 오버플로 예외가 발생합니다.

if (j_ecg < 2569) 
{ 
    for (int i = 0; i < 32; i++) 
    { 
     this.Invoke((MethodInvoker)delegate 
     { 
     ECG.Points.AddXY(puntos_ecg[j_ecg].X,puntos_ecg[j_ecg].Y); 
     }); 
     j_ecg++; 
    } 
} 

else 
{ 
    for (int i = 0; i < 32; i++) 
    { 
     this.Invoke((MethodInvoker)delegate 
     { 
      ECG.Points[ecg_s].SetValueY(puntos_ecg[j_ecg].Y); 
      for (int j = 1; j < 10; j++){ ECG.Points[ecg_s + j].SetValueY(double.NaN); } 
     }); 


     j_ecg++; 
     ecg_s++; 
     if (ecg_s == 2560) { ecg_s = 0; } 
    } 
} 

크로스 스레드 문제를 피하기 위해 호출이 있습니다.

나는 예외를 얻지 못해 어떻게 할 수 있습니까? SetValueY 호출 바로 전에 선택되지 않은 키워드를 사용해 보았지만 아무 것도 변경되지 않았습니다.

+1

그들은 오버 플로우 예외보다 더 유익한 정보를 제공해야하지만 숫자가 아닌 것을 그래프로 표시하는 것은 의미가 없습니다. 결국, NaN을 축에 어디에 넣을까요? –

답변

0

최소/최대 계산 할 필요가 없도록 자동 스케일링을 사용하지 않도록 설정되어 시도 우선 : 당신은 여전히 ​​ 실제 가치의 하나하나 이상이 필요하지만

chart1.ChartAreas["Default"].AxisY.Minimum = <your min>; 
chart1.ChartAreas["Default"].AxisY.Maximum = <your max>; 

당신의 시리즈. 표시된 값을 추적하는 것이 좋습니다. 모든 것이 NaN이면 음모를 그만 두십시오! 다음 유효 값이 플로팅을 재개 할 때 나타납니다.

참고 : NaN 대신에 0을 사용하는 것이 다른 해결책입니다.

관련 문제