Программирование USB-устройства на Mac - PullRequest
3 голосов
/ 08 июля 2010

Я обновляю старый старый код (который работает пока, но использует OpenTransport, так что ... нет), который взаимодействует со сканером USB. Я думаю, я понимаю, как IOUSBDeviceInterface и IOUSBInterfaceInterface должны работать, но я не могу получить информацию о каналах.

У меня есть метод, который принимает: (IOUSBInterfaceInterface **)intf, который имеет две трубы. Я считаю, что он настроен правильно, но я не уверен, как это проверить. Внутри я делаю:

for (i=1; i <= numPipes; i++)
{
    err = (*intf)->GetPipeProperties(intf, i, &direction, &number, &transferType, &maxPacketSize, &interval);
}

Но возвращается kIOReturnNotOpen. Я правильно определяю сканер (когда сканер выключен, он даже не доходит до этой стадии), и я не думаю, что другие программы пытаются получить доступ к сканеру.

Есть ли какой-нибудь разумный способ определить, что идет не так? (то есть, какая другая программа думает, что у нее есть открытые каналы, или как там?)

Код технически написан на Objective-C, но, как вы можете видеть, приведенный выше код довольно ванильный C, отсюда и теги.

1 Ответ

1 голос
/ 09 июля 2010

Вы уже вызвали USBInterfaceOpen для взаимодействия?

Если вы еще этого не сделали, просто посмотрите на пример кода USBNotification.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...