Речь всё о том же Powerswitch с сайта http://www.obdev.at/products/avrusb/index.html
Как сделать так чтобы можно было управлять двумя такими девайсами? Может перекомпилить дрова и сменить их VID и PID?
Если это так, то как это сделать?
Исходные файлики прилагаются:
main.c
main.hex
Makefile
usbconfig.h
и ещё какие-то. Вот прикреплённый архивчик, всё кроме схемы.
Помогите плиз? а то мне нужно свои стробы и ЦМУ для дискотек переделать на USB.
Одинаковые USB девайсы. Как подключить из сразу оба?
- Slawo
- Открыл глаза
- Сообщения: 69
- Зарегистрирован: Вс сен 23, 2007 15:34:32
- Откуда: г. Киров
- Контактная информация:
Одинаковые USB девайсы. Как подключить из сразу оба?
- Вложения
-
- PowerSwitch.rar
- (116.45 КБ) 301 скачивание
- Реклама
- Slawo
- Открыл глаза
- Сообщения: 69
- Зарегистрирован: Вс сен 23, 2007 15:34:32
- Откуда: г. Киров
- Контактная информация:
Да. Верно. Если подключить их вместе, то при сканировании устройств в PowerSwitshe ищется VID=0x16C0 PID=0x05DC. Если найдены то udev:= usb_open(dev) и выход из процедуры.Mamonth писал(а):Вообще, если я правильно понимаю, при подключении устройству назначается нумератор, и как минимум они будут на разных виртуальных COM-портах... Ты пробовал подключать?
Можно подключать сначала один девайс на шину которая первая сканируется, включать его, а потом второй девайс и открывать копию проги. Тогда будет работать и второй девайс.
Тогда можно поставить вопрос по-другому. Как просканировать все устройства и потом уже выбрать из списка нужное?
До каких пор сканировать? А то виснет
Вот процедура открытия порта для тех, у кого нет исходников (ссылка на сайт выше):
procedure TForm1.Button3Click(Sender: TObject);
var foundvendor,foundprodukt:boolean;
bus: pusb_bus;
dev: pusb_device;
begin
foundvendor:=false;
foundprodukt:=false;
usb_init; // Initialize libusb
form1.Caption:=usb_strerror;
if(usb_find_busses<1) then showmessage(usb_strerror);
if (usb_find_devices<1) then showmessage(usb_strerror); // Find all devices on all USB devices
bus := usb_get_busses; // Return the list of USB busses found
if bus=nil then showmessage(usb_strerror);
while Assigned(bus) do
begin
dev := bus^.devices;
while Assigned(dev) do
begin
if dev^.descriptor.idVendor=5824 then foundvendor:=true;
if dev^.descriptor.idProduct=1500 then foundprodukt:=true;
if (foundvendor and foundprodukt) then begin
udev:= usb_open(dev);
Button4.Click;
GroupBox1.Visible:=true;
SpinEdit4.OnChange(self);
break;
end else begin foundvendor:=false; foundprodukt:=false; end;
dev := dev^.next;
end;
if (foundvendor and foundprodukt) then break;
bus := bus^.next;
end;
statusbar1.Panels[0].Text:=usb_strerror;
if not (foundvendor and foundprodukt) then showmessage('Powerswitch (VID=0x16C0 PID=0x05DC)'+chr(10)+chr(13)+'Not Found');
end;
Просьба на будущее: оформляйте такие текты в виде приложений к посту. См. пункт 5 http://www.radiokot.ru/forum/viewtopic.php?t=6538
- Реклама

