【问题标题】:Is Carbon event handling still working in El Capitan?Carbon 事件处理是否仍在 El Capitan 中工作?
【发布时间】:2015-10-28 13:17:05
【问题描述】:

Carbon 事件处理在 OS X 10.11 El Capitan 中是否仍然有效?

EventTypeSpec OPNEventType[3];
    OPNEventType[0].eventClass = getEventClass();
    OPNEventType[0].eventKind  = getEventKindInsert();
    OPNEventType[1].eventClass = getEventClass();
    OPNEventType[1].eventKind  = getEventKindRemove();
    OPNEventType[2].eventClass = getEventClass();
    OPNEventType[2].eventKind  = getEventKindDataAvailable();
    handlerUPP = NewEventHandlerUPP(CBOpticonHandler);

    //  create the OPN interface, which is passed to our event handler
    interface = CreateOPNInterface();

    OSStatus status = InstallApplicationEventHandler(handlerUPP, 3, OPNEventType, interface, NULL);
    if ( status != noErr) {
        NSLog(@"%s: InstallApplicationEventHandler failed!", __PRETTY_FUNCTION__);
        [self stop];
        return;
    }

升级 OS X 后,此代码似乎不再工作。有什么替代方法?

【问题讨论】:

  • 在什么情况下它不起作用?安装处理程序时是否出现错误?如果是这样,什么错误?还是您的处理程序从未被调用?您要处理的实际事件类和种类对是什么?你确定这些正在发生吗?你试过event tracing吗?
  • @KenThomases 永远不会调用处理程序。事件类别:OPTI eventKind:1。这是一个 OPTICON OPN 2001 条码扫描器。由于运行 gdb 时的一些问题(我猜是应用程序签名),我无法跟踪事件。
  • 我怀疑 El Capitan 不再支持这种旧扫描仪。但我想有证据证明这一点。
  • 您可以使用 lldb 而不是 gdb。此外,如果您从我链接的位置向上滚动一点,有一种方法可以通过设置环境变量来启用对所有 Carbon 事件的跟踪。这不需要任何调试器,但输出非常冗长。综上所述,我怀疑您的扫描仪需要与 El Capitan 不兼容的驱动程序。
  • IIRC 你不能在 /System/Library/Extensions 中安装非 Apple 驱动程序;他们必须在 /Library/Extensions/

标签: macos cocoa macos-carbon osx-elcapitan


【解决方案1】:

您使用的是随 SDK 提供的 .dylib 还是 .framework?尝试使用 .dylib - 它不会崩溃并且 InstallApplicationEventHandler 成功完成。

但是,通信本身无法正常工作,即 SDK 提供的演示项目无法在设备上读取/设置时间、读取条形码(尽管应用程序检测到扫描仪何时连接/断开连接)。我认为这与 El Cap 中 CDC 驱动程序的更改有关,因为扫描仪本身就是一个 CDC 设备。

只是想知道 - 你有没有运气解决这个问题并使 OPN2001 在 El Capitan 上运行?

【讨论】:

  • 不,我不知道如何解决它。但我发现在打开应用程序之后 拔出和插入扫描仪可以解决问题。这与 Opticon 提供的 OPN Scanner 演示应用相同。
  • @Patrick 值得一提的是,Opticon 发布了一个更新的库,以防万一其他人遇到这个问题,你可以在他们的网站上下载它
猜你喜欢
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2016-07-05
  • 2016-01-11
  • 2016-03-05
  • 2016-03-08
  • 2016-01-01
  • 2016-10-24
相关资源
最近更新 更多