【问题标题】:EAAccessory Notification problemEAAccessory 通知问题
【发布时间】:2010-05-24 12:48:28
【问题描述】:

我正在使用 POS 设备刷卡。它的工作很好。我使用了以下代码。

- (id) init
{
self = [super init];
if (self != nil)
{
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
EAAccessoryManager *accessoryMamaner  = [EAAccessoryManager sharedAccessoryManager];

[accessoryMamaner registerForLocalNotifications];
[notificationCenter addObserver: self  selector: @selector (accessoryDidConnect:)   name: EAAccessoryDidConnectNotification object: nil];
[notificationCenter addObserver: self  selector: @selector (accessoryDidDisconnect:)   name: EAAccessoryDidDisconnectNotification object: nil];

NSArray *accessories = [accessoryMamaner connectedAccessories]; 
accessory = nil; 

session = nil; 

for (EAAccessory *obj in accessories)
{ 
if ([[obj protocolStrings] containsObject:@"com.XXXXX"] || [[obj protocolStrings] containsObject:@"com.YYYYYY"] )
{ 
accessory = obj; 
break;
}
} 

if (accessory)
{ 
session = [[EASession alloc] initWithAccessory:accessory  forProtocol:@"com.dailysystems.DS247"]; 
if (!session) session = [[EASession alloc] initWithAccessory:accessory  forProtocol:@"com.usaepay.ipos"];

if (session)
{
self.deviceConnected = YES;
[[session inputStream] setDelegate:self]; 
[[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]  forMode:NSDefaultRunLoopMode]; 
[[session inputStream] open]; 

[[session outputStream] setDelegate:self]; 
[[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]  forMode:NSDefaultRunLoopMode]; 
[[session outputStream] open]; 
}
else
{
UIAlertView *accessoryInfo = [[UIAlertView alloc] initWithTitle:@"Alert!" message:@"Hardware is not connected." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[accessoryInfo show]; [accessoryInfo release];
}
} 
}
return self;
}

当我断开附件时,它给了我附件DidDisconnect,当我连接它时,它给我附件DidConnect, 但问题是在该配件停止工作后它不响应命令。我试图再次释放 alloc 和 alloc 但没有用。 请告诉我是否有人知道如何让配件再次工作。 提前致谢。

【问题讨论】:

    标签: iphone-sdk-3.0


    【解决方案1】:

    不久前我遇到了类似的问题。

    首先,我希望你在做 alloc/init 而不仅仅是 alloc。

    其次,您是否释放会话并在附件DidDisconnect 回调中设置为零?我遇到了一些问题,旧会话妨碍了我。

    第三,我在再次初始化配件之前稍微延迟了一些运气。

    我将我的设备设置放在另一个函数中,并从 init: 和 accessoryDidConnect: 中调用它:

    然后我放了一个 NSTimer 来延迟这个函数(或者甚至是一个 sleep() 调用来进行测试)以防万一——在那之后我的问题似乎比以前少了很多,所以也许通知是在设备真的准备好重新开启会话了吗?

    你的通知回调测试会很棒!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 2020-04-02
      相关资源
      最近更新 更多