реклама на сайте
подробности

 
 
> Как обьеденить в LPC2148 2 USB усторйства - виртуальный порт и AudioUSB?
=F8=
сообщение Jul 24 2007, 14:16
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Как обьеденить в LPC2148 2 USB усторйства - виртуальный порт и AudioUSB? Пытался просто просто засунуть в один дескриптор интерфейсы порта и AudioUSB нифига не получается, т.е. по отдельности все работает, а вот вместе нифига.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=F8=
сообщение Sep 15 2007, 13:07
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Ну в целом проблема решилась, AudioUSB и Кейловский VirtualCom для LPC2148 вместе живут вполне нормально. Только в драйвере в функции UsbCom_SelectInterface изменил

Код
TotalInterfaces = ConfigurationDescriptor->bNumInterfaces;

    InterfaceList[0].InterfaceDescriptor = NULL;
    InterfaceList[0].Interface           = NULL;
    
    InterfaceList[1].InterfaceDescriptor = NULL;
    InterfaceList[1].Interface           = NULL;

    DbgPrint("UsbCom_SelectInterface() DO=%08x Interfaces=%d\n", DeviceObject, lTotalInterfaces );

    StartPosition = (PVOID)((ULONG)ConfigurationDescriptor + (ULONG)(ConfigurationDescriptor->bLength));

    InterfaceList[0].InterfaceDescriptor = USBD_ParseConfigurationDescriptorEx (
            ConfigurationDescriptor,
            StartPosition, //search from start of config  descriptro
            -1,        // try interface #0
             0,     // alternate setting
            0xFF,   // interface class
            -1,     // interface subclass
            0xFF);   // interface protocol
    
    if(InterfaceList[0].InterfaceDescriptor != NULL)
    {
        UCHAR bInterfaceSubClass;
        bInterfaceSubClass = InterfaceList[0].InterfaceDescriptor->bInterfaceSubClass;
        if(bInterfaceSubClass <= 1)
        {
            deviceExtension->ChannelNumber = bInterfaceSubClass;
        }
        else
        {
            ntStatus = STATUS_DEVICE_CONFIGURATION_ERROR;
            goto UsbCom_SelectInterface_Exit1;

        }
    }
    else
    {
        ntStatus = STATUS_DEVICE_CONFIGURATION_ERROR;
        goto UsbCom_SelectInterface_Exit1;
    }


    if ( ( urb = USBD_CreateConfigurationRequestEx(ConfigurationDescriptor, InterfaceList) ) == NULL ) {
        DbgPrint("UsbCom_SelectInterface() DO=%08x USBD_CreateConfigurationRequest() : FAIL\n", DeviceObject );
        ntStatus = STATUS_INSUFFICIENT_RESOURCES;    
        goto UsbCom_SelectInterface_Exit1;
    }

    InterfaceDescriptor = InterfaceList[0].InterfaceDescriptor;
    InterfaceInformation = InterfaceList[0].Interface;

Номер порта [code]теперь сохраняю в bInterfaceSubClass. Ну и в инф файле заменить &MI_01 на &MI_03 ну или какой там по счету интерфейс получается.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 04:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016