2011-12-06 27 views
1

我創建這個應用程序,將文本轉換爲摩爾斯電碼,然後使用iPhone的手電筒將其閃光。我已經使用字符串替換將NSString的內容轉換爲莫爾斯電碼。我找到了一個腳本,可以使用NSTimer以可調間隔打開和關閉iPhone手電筒。但我不知道如何添加兩個不同的時間間隔,一個是莫爾斯「。」和一個莫爾斯「 - 」。誰能幫我?使用兩個NSTimer

- (void)viewDidLoad { 
[super viewDidLoad]; 

int spaceTime; 
    spaceTime = 1; 

int flashTimePrik; 
    flashTimePrik = 5; 

strobeIsOn = NO; 
strobeActivated = NO; 
strobeFlashOn = NO; 

flashController = [[FlashController alloc] init]; 

self.strobeTimer =   [ 
          NSTimer 
          scheduledTimerWithTimeInterval:spaceTime 
          target:self 
          selector:@selector(strobeTimerCallback:) 
          userInfo:nil 
          repeats:YES 
          ]; 

self.strobeFlashTimer =  [ 
          NSTimer scheduledTimerWithTimeInterval:flashTimePrik 
          target:self 
          selector:@selector(strobeFlashTimerCallback:) 
          userInfo:nil 
          repeats:YES 
          ]; 


} 
- (void)strobeTimerCallback:(id)sender { 
    if (strobeActivated) { 
     strobeIsOn = !strobeIsOn; 
     strobeFlashOn = YES; 

} else { 
     strobeFlashOn = NO; 
} 
} 
- (void)strobeFlashTimerCallback:(id)sender { 
if (strobeFlashOn) { 
    strobeFlashOn = !strobeFlashOn; 
    [self startStopStrobe:strobeIsOn]; 

} else { 
    [self startStopStrobe:NO]; 
} 
} 

回答

2

只需使用一個計時器,根據點,短劃線或空格間隔設置時間間隔。對於「A」是點空間破折號

  • 打開燈並將該定時器設置爲點間隔。
  • 當定時器啓動時,關閉燈並將定時器設置爲空格間隔。
  • 定時器啓動時,打開燈並將定時器設置爲虛線間隔。
  • 當計時器發生火災時,請關閉照明燈。
+0

我明白了..你能告訴我如何在實踐中使用它嗎? – ebsp

0

使用bajillion計時器。全單火模式。想要短暫的通話電話以短暫通話。然後在定時器回調中,爲下一個短劃線或圓點創建另一個定時器。當陣列中沒有更多的信號傳輸時,就完成了。代碼是近似的....

- (void)lightTimerOffCallback:(id)sender { 
     turnLIGHTOFF 
     [NSTimer scheduledTimer:intervalbeforeStartingNextChar... selector(@startNextDotOrFlash) repeat NO] 
    } 


- (void)startNextDotOrFlash:(id)sender { 
    if (there is a new dot or dash to do) 
     intervalToLeaveThisLightOn = 1.0 : 0.1 ? isDot; 
     turnLIGHTON 
     [NSTimer scheduledTimer:intervalToLeaveThisLightOn... selector(@lightTimerOffCallback) repeat NO] 
    } 

在iVar中不需要計時器。