[Hardware] Много USB - RS232

Pavel Vainerman VPashka на nm.ru
Вт Сен 12 01:22:14 MSD 2006


6 сентября 2006 15:23, A.Kitouwaykin написал:
> 		Добрый день. Есть проблема.

> 	Есть ли возможность установить однозначное соответствие
> между шнурком и номером устройства /dev/ttyUSBx? Где то мелькало,
> что в ядрах 2.6...
   Здесь можно смотреть через  /sys/bus/usb-serial/xxx
в этом каталоге формируются записи о каждом устройстве.

В своё время (путём проб и ошибок) был написан код программы сопоставляющий 
"номер" разъёма с устройством:

Проходили по списку каталогов в каталоге "/sys/bus/usb-serial/"
и "дешефровывали" их название следующим образом:
(target - это текущая считанная запись)

void read_list(char target, ...)
{

        char tmp[100]; char pci[100];
        char dev[20]; char num1[20];
        char usb[20]; char usb1[20];

        // обнуляем
        bzero(tmp,sizeof(tmp));
        bzero(pci,sizeof(pci));
        bzero(dev,sizeof(dev));
        bzero(num1,sizeof(num1));
        bzero(usb,sizeof(usb));
        bzero(usb1,sizeof(usb1));

        int num_ctrl(0);    // номер контроллера
        int num_con(0);     // номер разъёма
        // пример строки
        // ../../../devices/pci0000:00/0000:00:02.0/usb2/2-3/2-3:1.0/ttyUSB0
        
        int res = 
sscanf(target,"%[./]devices/%[^/]/%[^/]/%[^/]/%d-%d/%[^/]/%[^/]",
                          &tmp,&pci,&num1,&usb,&num_con,&num_ctrl,&usb1,&dev);
        if( res != 0 )
        {
                ...
                 Соответственно device будет "/dev/" + dev...
                ...
        }
...
}
Конечно всё это можно и на баше написать, нам надо было на "c"...

        В общем случае каждый внешний usb-разъём всегда идентифицируется
одинаково (это номер контроллера и номер канала), но файл устройства с которым 
он связывается при каждом "втыкании" может быть разным.
	


        P.S. Я конечно не очень разбираюсь в правилах наименований в sysfs, но
это работало...
        P.P.S. Надеюсь если что, старшие товарищи меня поправят...

	


-- 
Павел Вайнерман
Eternity Software Team
http://www.etersoft.ru


Подробная информация о списке рассылки Hardware