-2

トラフィックがしきい値を下回ったときにルータートラフィックを監視するプログラムを開発しました。Javaプログラムがアラームをトリガーします。30秒ごと(タイマー)SNMPを介してルーターからトラフィック値を取得し、各値を配列に格納します。私の問題は、停止が発生した場合、textfiledに表示される値が+/- 0.0で、textfiledの色が赤になりますが、数分後、textfieldの色が緑になり、textfiledの値がまだ低いことです。この状態を管理し、トラフィックが回復するまでテキストフィールドを赤または黄色に保つのを手伝っていただけませんか。以下は私のコードです:

//sum of the array    
public float sumArray(float arr[]){
    int j;
    float sum = 0;
    for(j = 0; j < arr.length; j++){
        sum = sum + arr[j];
    }
    return sum;
}
// method generating alert  
public void blade1() {
     //arr1 to made average of valCalOut = valFinalOut
 arr1 = new float[3];
     //arr2 calculate the threhsold it's the average of valCalOut
 arr2 = new float[10];  
        // fill the arr1 with valCalOut
        if ( i1 <= arr1.length ){           
            arr1[i1] = valCalOut;
            i1 ++;

         }else{
             i1 =0;
             arr1B1[i1] = valCalOut;
             i1++;
         }
        //sum arr1 to get valFinalOut
        if (index1 <= 3){
                valFinalOut = sumArray(arr1) / index1 ;
                index1++;
            }else{
                valFinalOut = sumArray(arr1) / 3 ;
          }
        // fill arr2 with valCalOut 
        if ( i2 < arr2.length ){            
            arr2[i2] = valCalOut;
            i2 ++;

         }else{
             i2 =0;
             arr2[i2] = valCalOut;
             i2++;
         }  
                    // sum arr2 to calculate the threshold(is average of valCalOut)
        if (index2 <= 10){
            averageVal = sumArray(arr2) / index2 ;
            index2++;
        }else{
            averageVal = sumArray(arr2) / 10;
        }

        threshold = averageVal - (averageVal * dropRatio);


    txtout.setText(Float.toString(valFinalOut));
        txtav.setText(Float.toString(averageVal));
    txtth.setText(Float.toString(threshold));


                if (valFinalOut < threshold ) {
                    if (txtout.getBackground() == Color.YELLOW) {
                                            //btnreset pressed txtout turned yellow
                            stopAlarm();
                    } else {
                         btnreset.setEnabled(true);
                         txtout.setBackground(Color.RED);
                         btnreset.setEnabled(true);
                         playAlarm();
                         textArea.append(dateTime()+" : Traffic dropped, Bandwith : " + valFinalOut + " Mbps, Average : "+averageVal+  " Mbps, Threshold : " +threshold+ " Mbps,  Please check ! \n "); 
                                                }
                } else {
                            txtout.setBackground(Color.GREEN);
                    btnreset.setEnabled(false);
                }       
        }
4

1 に答える 1

0

平均時間を5分ではなく30分増やしたので、配列にはより多くの値があり、10個の値ではなく60個の値が含まれています。そのため、トラフィックが実際に回復するまで、アラームは赤くなり続けます。みんなありがとう。

于 2012-08-03T18:52:51.210 に答える