как проверить продолжительность пиковой мощности - PullRequest
1 голос
/ 12 февраля 2012

хотел бы знать, есть ли функция, чтобы проверить, достигну ли я пиковой мощности в течение определенного периода времени, затем что-то сделаю.

псевдокод

максимальный порог -110дБ если пользователь остается @ этот порог более 5 секунд, показать предупреждение еще ничего не делать.

РЕДАКТИРОВАТЬ: Ответ

-(void)thresholdCheck:(NSString *)peakValue
{   
    int sec = hit/60; //1/60sec
    NSString *tempSec = [NSString stringWithFormat:@"%i",sec];
    [timeTrash setText:tempSec];

    if (110<[peakValue intValue])//110db
    {
        hit++;
        NSLog(@"hit threshold %i",hit);        
    }
    else
    {
        hit =0;
        //NSLog(@"hit threshold %i",hit); 
    }

    if (hit >=330)//more then 5 sec {

         NSLog(@"hit thresholded %i",hit);
        [recorder stop];
        [levelTimer invalidate];

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Threshold Hit" message:@"Sorry You Hit the threshold" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
        [alert show];
    }

1 Ответ

2 голосов
/ 12 февраля 2012

Я сомневаюсь, что вы найдете готовую функцию, которая будет делать то, что вы просите здесь. Простой конечный автомат (FSM) кажется подходящим решением. Посмотрите этот учебник на автоматах, если вы еще не знакомы с ними.

Вы можете реализовать простые FSM, используя перечисление и оператор switch, как показано здесь или в листинге 1 в учебной ссылке, которую я разместил выше.

Вот пример того, как ваш FSM может выглядеть в вашем конкретном случае:

State Chart

...