0

我有一个用于电机控制的多视图(控制器)应用程序。

主页选择功能(哪些电机)然后转到另一个页面(视图控制器)以移动那些相关的电机(加范围,减范围并在每个视图控制器上停止加上紧急停止)。

将 redpark 串行电缆用于初始版本(稍后会介绍)。我让主视图控制器发送串行数据,但无法让其他视图控制器发送数据。

最好的方法是什么?

我已经尝试让每个视图控制器成为 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"];

只有主(初始视图控制器)发送串行数据。我需要单独的“页面”,以便用户一次调整一个设置/位置。

4

1 回答 1

1

建议您重新架构并使用单独的对象来控制电机和串行连接。使它成为一个单例,所有其他对象都可以轻松地找到它并与之通信。如果这些应用程序需要在某些事件发生时得到通知,请让它发出通知。这是经典风格。

于 2013-05-23T11:20:07.980 回答