Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Помогите разобратся с виртуальным сом портом(+)

Отправлено F8 06 декабря 2006 г. 17:01


Исполькую в девайсине виртуальный сом порт для LPC из кейловского примера. Там реализованы два виртуальных порта, мне нужен только один.
Чтоб убрать второй изменяю BYTE USB_ConfigDescriptor

Исходный вариант

#define B_INTERVAL 0x08
/* USB Configuration Descriptor */
/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
const BYTE USB_ConfigDescriptor[] = {
/* Configuration 1 */
USB_CONFIGUARTION_DESC_SIZE, /* bLength */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
WBVAL( /* wTotalLength */
USB_CONFIGUARTION_DESC_SIZE +
USB_INTERFACE_DESC_SIZE +
NUM_ENDPOINTS * USB_ENDPOINT_DESC_SIZE +
USB_INTERFACE_DESC_SIZE +
NUM_ENDPOINTS * USB_ENDPOINT_DESC_SIZE
),
0x02, /* bNumInterfaces */
0x01, /* bConfigurationValue */
0x00, /* iConfiguration */
USB_CONFIG_BUS_POWERED | /* bmAttributes */
USB_CONFIG_REMOTE_WAKEUP,
USB_CONFIG_POWER_MA(100), /* bMaxPower */
/* Interface 0, Alternate Setting 0, Class Code Unknown */
USB_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x00, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
NUM_ENDPOINTS, /* bNumEndpoints */
USB_DEVICE_CLASS_VENDOR_SPECIFIC, /* bInterfaceClass, USB_CLASS_VENDOR_SPECIFIC */
0xFF, /* bInterfaceSubClass, USB_SUBCLASS_CODE_UNKNOWN */
0xFF, /* bInterfaceProtocol, USB_PROTOCOL_CODE_UNKNOWN */
0x00, /* iInterface, STR_INDEX_INTERFACE = no_string */
/* Endpoint, EP1 Interrupt In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(1), /* bEndpointAddress */
USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
WBVAL(0x0004), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */ /* bInterval */
/* Endpoint, EP2 Bulk Out */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_OUT(2), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */
/* Endpoint, EP2 Bulk In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(2), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */
/* Interface 1, Alternate Setting 0, Class Code Unknown */
USB_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x01, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
NUM_ENDPOINTS, /* bNumEndpoints */
USB_DEVICE_CLASS_VENDOR_SPECIFIC, /* bInterfaceClass, USB_CLASS_CODE_UNKNOWN */
0xFF, /* bInterfaceSubClass, USB_SUBCLASS_CODE_UNKNOWN */
0xFF, /* bInterfaceProtocol, USB_PROTOCOL_CODE_UNKNOWN */
0x00, /* iInterface, STR_INDEX_INTERFACE = no_string */
/* Endpoint, EP4 Interrupt In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(4), /* bEndpointAddress */
USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
WBVAL(0x0004), /* wMaxPacketSize */
0x20, /* 32ms */ /* bInterval */
/* Endpoint, EP5 Bulk Out */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_OUT(5), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
0x20, /* 32ms */
/* Endpoint, EP5 Bulk In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(5), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
0x20, /* 32ms */
/* Terminator */
0 /* bLength */
};

Чтоб удалить второй порт:
const BYTE USB_ConfigDescriptor[] = {
/* Configuration 1 */
USB_CONFIGUARTION_DESC_SIZE, /* bLength */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
WBVAL( /* wTotalLength */
USB_CONFIGUARTION_DESC_SIZE +
USB_INTERFACE_DESC_SIZE +
NUM_ENDPOINTS * USB_ENDPOINT_DESC_SIZE
),
0x01, /* bNumInterfaces *!!!*/
0x01, /* bConfigurationValue */
0x00, /* iConfiguration */
USB_CONFIG_BUS_POWERED | /* bmAttributes */
USB_CONFIG_REMOTE_WAKEUP,
USB_CONFIG_POWER_MA(100), /* bMaxPower */
/* Interface 0, Alternate Setting 0, Class Code Unknown */
USB_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x00, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
NUM_ENDPOINTS, /* bNumEndpoints */
USB_DEVICE_CLASS_VENDOR_SPECIFIC, /* bInterfaceClass, USB_CLASS_VENDOR_SPECIFIC */
0xFF, /* bInterfaceSubClass, USB_SUBCLASS_CODE_UNKNOWN */
0xFF, /* bInterfaceProtocol, USB_PROTOCOL_CODE_UNKNOWN */
0x00, /* iInterface, STR_INDEX_INTERFACE = no_string */
/* Endpoint, EP1 Interrupt In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(1), /* bEndpointAddress */
USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
WBVAL(0x0004), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */ /* bInterval */
/* Endpoint, EP2 Bulk Out */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_OUT(2), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */
/* Endpoint, EP2 Bulk In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(2), /* bEndpointAddress */
USB_ENDPOINT_TYPE_BULK, /* bmAttributes */
WBVAL(0x0040), /* wMaxPacketSize */
B_INTERVAL, /* 32ms */
/* Terminator */
0 /* bLength */
};

Второй порт при этом удаляется, но драйвера можно поставить только принудительно, либо если они были установлены ранне, то все также работает нормально.
Ниже привожу sys файл.

;
; Ph2kUSB.inf - Philips USB-Serial Driver for Windows 2000
;
; Copyright 2004 Philips Semiconductors
;

[Version]
Signature="$CHICAGO$"
Class=Ports
ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318}
Provider=%Philips%
DriverVer=8/3/2004,2.0.1

[Manufacturer]
%Philips%=MRI

[MRI]
%PhilipsUSBSerial%=Philips.Install,USB\VID_C251&PID_1305&MI_00
%PhilipsUSBSerial%=Philips.Install,USB\VID_C251&PID_1305&MI_01

[DestinationDirs]
Philips.Files.Driver.NT=10,System32\Drivers

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Windows 2000

[Wdm1.Install.NT]
CopyFiles=Wdm1.Files.Driver.NT

[Philips.Install.NT]
CopyFiles=Philips.Files.Driver.NT
Include=MSPORTS.INF
Needs=SerialEnumerator.NT
AddReg=Philips.NT.AddReg

[SourceDisksNames.NT]
1="Philips Installation Disk",,,

[Philips.Files.Driver.NT]
PLP2KUS.sys

[Philips.Install.NT.Services]
Include=MSPORTS.INF
Needs=SerialEnumerator.NT.Services
AddService = Philips, %SPSVCINST_ASSOCSERVICE%, Philips.Service

[Philips.Install.NT.HW]
AddReg=Philips.NT.HW.AddReg

[Philips.NT.AddReg]
HKR,,PortSubClass,1,01
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[Philips.NT.HW.AddReg]
HKR,,"UpperFilters",0x00010000,"serenum"

[Philips.Service]
DisplayName = %Philips.ServiceName%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %10%\System32\Drivers\PLP2KUS.sys

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Strings

[Strings]
Std = "(Standard port types)"
Philips = "Philips Semiconductors"
PhilipsUSBSerial ="Philips USB to Serial Adaptor"
Philips.ServiceName="Philips USB to Serial Service"
SPSVCINST_ASSOCSERVICE=0x00000002; Driver service is associated with device being installed
COPYFLG_NOSKIP=2 ; Do not allow user to skip file
SERVICE_KERNEL_DRIVER=1
SERVICE_AUTO_START=2
SERVICE_DEMAND_START=3
SERVICE_ERROR_NORMAL=1



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа

Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru