我有一个用于电机控制的多视图(控制器)应用程序。
主页面选择功能(哪些电机)然后转到另一个页面(viewcontroller)以移动那些相关的电机 (加上范围,减去范围并在每个视图控制器上停止加上紧急停止)。
使用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"];
只有主(初始视图控制器)发送串行数据。 我需要单独的“页面”,以便用户可以一次调整一个设置/位置。
答案 0 :(得分:1)
建议您重新架构并使用单独的对象来控制电机和串行连接。使它成为单身,所有其他对象都可以轻松找到并与之通信。如果这些应用需要在某些事件发生时得到通知,请让它发送通知。这是经典的风格。