2012-07-02 54 views
0

好的,所以我很聰明。在iPhone上運行Redpark的Xcode

我有一個應用程序,利用推和彈出viewControllers。我的一個viewControllers具有讀取Arduino Uno輸入的基本設置(使用Redpark電纜)。

當我彈出視圖控制器關閉應用程序死亡,我不知道是什麼導致它。我知道它與Redpark編碼有關,因爲如果沒有它,應用程序工作正常。

當我將Redpark編碼插入其他viewControllers時,應用程序不會死亡,但是我必須讀取串行代碼的文本消失。

那麼是什麼導致它崩潰?或者不顯示數據。

我認爲它與[rscMgr打開]命令有關。任何輸入都會有用。


編輯:讓我也問。有沒有辦法在我的應用程序的後臺運行讀取串行數據的過程?這可能會解決問題。

+0

顯示相關的代碼。順便說一句 - 有沒有任何示例代碼使用該電纜?以前沒聽說過。 –

+0

大部分(如果不是所有的代碼都在Redpark Serial SDK中),我寫的所有代碼都與Alasdair Allan的代碼相同http://programmingiphonesensors.com/redpark/cable.html – Mellon

回答

1

所以我相信我解決了這個問題,或者只是在上面貼上創可貼。

在整本書中,由Alasdair Allen編寫的「Arduino的iOS傳感器應用程序」全部例子都是在主視圖控制器中創建的。

我正在玩弄例子加上額外的視圖控制器。我認識到主視圖控制器總是在運行。

我所做的解決問題的方法是創建一個全局變量,它保存輸入,然後將其打印到推送的viewController。

我還使用了一個計時器來更新推送的viewController中的值。

所以......

  1. 創建一個變量,將容納輸入。我在AppDelegate類中做了這個(我傾向於將所有全局變量放在AppDelegate中)。

    @synthesize rxBuffed = _rxBuffed; 
    
  2. 運行使用rxBuffed變量主要的viewController的Redpark串行輸入(可以叫它任何你想要的)。

    for (int i = 0; i < numBytes; i++) { 
    delegate.rxBuffed = [NSString stringWithFormat:@"%@%c", delegate.rxBuffed, ((char *)rxBuffer)[i]]; 
    } 
    
  3. 在您的viewController中創建您想要接收數據的定時器。我每隔1/10秒更新一次。

    myTimer =[NSTimer scheduledTimerWithTimeInterval:.1 
    target:self selector:@selector(updateValues) 
    userInfo:nil repeats:YES]; 
    
  4. 在updateValues中導入該變量。

    -(void)updateValues{ 
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    yourVariable = delegate.rxBuffed; 
    } 
    
相關問題