0

モーター制御用の複数ビュー (コントローラー) アプリを用意しました。

メインページは機能(モーター)を選択し、別のページ(ビューコントローラー)に移動して、関連するモーターを移動します(プラス範囲、マイナス範囲、各ビューコントローラーの停止と緊急停止)。

初期バージョンには redpark シリアル ケーブルを使用します (後で説明します)。シリアル データを送信するメイン ビュー コントローラーがありますが、データを送信する他のビュー コントローラーを取得できません。

それを行う最良の方法は何ですか?

各View Controllerをredparks rscMgrのデリゲートにしようとしましたが、うまくいきません(可能な本当にばかげたことをしていない限り)

例えば

inviewcontrollerx.h

#import "RscMgr.h"

#define BUFFER_LEN 1024


@interface FBInfoViewController : UIViewController <RscMgrDelegate> {
    RscMgr *rscMgr;
    UInt8 rxBuffer[BUFFER_LEN];
    UInt8 txBuffer[BUFFER_LEN];
    BOOL cableConnected;

}

@property (nonatomic, strong) RscMgr *rscMgr;

@end


them in each one viewcontrollerx.m
- (void) viewDidLoad{
[super viewDidLoad];
rscMgr = [[RscMgr alloc] init];
[rscMgr ssetDelegate:self];

//etc

}



- (BOOL) sendMessage:(NSString *)Tmessage {

    NSLog(@"sendMSG: ");
    NSLog(@"String: %@", Tmessage);

    int bytesToWrite = Tmessage.length;

    for (int i =0;i < bytesToWrite; i++ ) {
    self->txBuffer[i] = (int)[Tmessage characterAtIndex:i];
    }

    NSLog(@"BYTES WRITTEN = %d", Tmessage.length);
    NSLog(@"Msg = %@", Tmessage);    

    int bytesWritten = [self->rscMgr write:txBuffer length:bytesToWrite];
    NSLog(@"Wrote %d bytes to serial cable.", bytesWritten);

    if (bytesWritten == bytesToWrite)
    {
    return TRUE;
    }
    else
    {
    return FALSE;
    }
}


then send a message by 
[self sendMSG : @"<VC20c203l,888c99>\n\r"];

メイン(初期View Controller)のみがシリアルデータを送信します。ユーザーが一度に1つの設定/位置を調整できるように、別の「ページ」が必要です。

4

1 に答える 1

1

モーターとシリアル接続を制御するために、別のオブジェクトを再設計して使用することをお勧めします。それをシングルトンにすると、他のすべてのオブジェクトがそれを簡単に見つけて通信できるようになります。これらのアプリが何らかのイベントが発生したときに通知を受け取る必要がある場合は、通知を送信するようにします。これはクラシックなスタイルです。

于 2013-05-23T11:20:07.980 に答える