1

iOS 用のシリアル ケーブル アダプターを使用するアプリを作成しています。アプリの基本設計は、詳細ビュー コントローラーを備えた分割ビュー コントローラーです。ここから、アクセサリを介して情報を送信するセッションを (別のビューで) 起動できます。セッション ビュー コントローラーからアクセサリ インターフェイス (SDK で提供) を制御するデリゲートをセットアップしたという意味で、アプリケーションを "動作" させ、最初の実行時に動作させました。唯一の問題は、(詳細ビュー コントローラーから再度起動するか、分割ビューでプロジェクトを切り替えることによって) セッションをもう一度実行しようとすると、既存の接続、つまり以前に確立された接続が原因で失敗することです。これは以下のコンソール ログです。

ERROR - opening session failed
ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-242/EASession.m:-[EASession dealloc] - 139 unable to close session for _accessory=0x14d59250 and sessionID=65536
Cable Not Connected

それも役立つ場合は、セッションビューコントローラーの .h および .m ファイルからいくつかのコードを取り除いたものを次に示します。

.h

@interface SessionViewController : UIViewController <RscMgrDelegate> {
RscMgr *rscMgr;
CableConnectState cableState;
}

@property (strong, nonatomic) IBOutlet UIBarButtonItem *cableStatus;
- (void) sendStringToSerial: (NSTimer *) timer;
@end

.m

@implementation SessionViewController
@synthesize cableStatus;
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.

    // Serial Setup
    rscMgr = [[RscMgr alloc] init];
    [rscMgr setDelegate:self];

    //checks cableConnectState and adjusts the outlet cableStatus accordingly
}

- (void) sendStringToSerial: (NSTimer *) timer {
    [rscMgr writeString:someString];
    }
@end

質問: 私が持っている構造は最善の方法ですか? もしそうなら、どうすればセッションの問題を解決できますか? そうでない場合、ここからどこへ行くべきかについての提案はありますか? ありがとう!

4

0 に答える 0