Работает ли обработка событий Carbon в El Capitan?

Работает ли обработка событий 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. Что может быть альтернативой?


person aneuryzm    schedule 28.10.2015    source источник
comment
В каком смысле не работает? Вы получаете ошибку при установке обработчика? Если да, то какая ошибка? Или ваш обработчик никогда не вызывается? Каков фактический класс событий, пары типов, которые вы пытаетесь обработать? Вы уверены, что они происходят? Пробовали ли вы отслеживание событий?   -  person Ken Thomases    schedule 28.10.2015
comment
@KenThomases Обработчик никогда не вызывается. Класс события: OPTI eventKind:1. Это сканер штрих-кода OPTICON OPN 2001. Мне не удается отследить события из-за некоторых проблем при запуске gdb (подпись приложения, я думаю).   -  person aneuryzm    schedule 29.10.2015
comment
Я подозреваю, что этот старый сканер больше не поддерживается на El Capitan. Но я хотел бы иметь доказательства этого.   -  person aneuryzm    schedule 29.10.2015
comment
Вы можете использовать lldb вместо gdb. Кроме того, если вы прокрутите немного вверх от того места, где я дал ссылку, есть способ включить отслеживание всех событий Carbon, установив переменную среды. Это не требует никакого отладчика, но вывод очень подробный. Учитывая все вышесказанное, я подозреваю, что для вашего сканера требуется драйвер, несовместимый с El Capitan.   -  person Ken Thomases    schedule 29.10.2015
comment
IIRC, вы больше не можете устанавливать драйверы сторонних производителей в /System/Library/Extensions; они должны быть в /Library/Extensions/   -  person geowar    schedule 29.10.2015


Ответы (1)


Используете ли вы .dylib или .framework, поставляемый с SDK? Попробуйте использовать .dylib — он не дает сбоев, и InstallApplicationEventHandler завершается успешно.

Однако сама коммуникация не работает должным образом, т. е. демонстрационный проект, поставляемый с SDK, не умеет считывать/устанавливать время на устройстве, считывать штрих-коды (хотя приложение определяет, когда сканер подключен/отключен). Я считаю, что это как-то связано с изменением драйвера CDC в El Cap, поскольку сам сканер является устройством CDC.

Просто интересно - вам удалось решить эту проблему и заставить OPN2001 работать на El Capitan?

person O.W.Grant    schedule 17.01.2016
comment
Нет, я не понял, как это исправить. Но я обнаружил, что отключение и подключение сканера после открытия приложения решает проблему. То же самое и с демонстрационным приложением OPN Scanner, предоставляемым Opticon. - person aneuryzm; 18.01.2016
comment
@Patrick, чего бы это ни стоило, Opticon выпустила обновленную библиотеку, на случай, если кто-то еще столкнется с этой проблемой, вы можете скачать ее на их веб-сайте. - person O.W.Grant; 19.09.2017