首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EAAccessory通知问题

EAAccessory通知问题
EN

Stack Overflow用户
提问于 2010-05-24 20:48:28
回答 1查看 1.9K关注 0票数 2

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

代码语言:javascript
复制
- (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;
}

当我断开附件时,它会给我accessoryDidDisconnect,当我连接时,它会给我accessoryDidConnect,但问题是附件停止工作后,它不会响应命令。我试着释放分配和分配,但没有用。请告诉我,如果有人知道如何让配件再次工作。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-08-05 09:17:47

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

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

其次,您是否正在释放会话并在accessoryDidDisconnect回调中将其设置为nil?我遇到了一些问题,因为以前的会议阻碍了我。

第三,在再次初始化附件之前,我有一点幸运,只是稍微延迟了一下。

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

然后我放了一个NSTimer来延迟这个函数(或者甚至一个睡眠()调用可以做测试),以防万一-我似乎在那之后比以前少了很多问题,所以也许在设备真正准备好重新打开会话之前通知就来了?

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2897053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档