automatyczny start programu USB device
Waldemar - 07-12-2006 10:45
automatyczny start programu USB device Hej,
nie całkiem ta grupa, ale może trochę ;-)
Mam zrobione ustrojstwo na USB, sterowane przez BitBangMode. W sumie
jest to lampka na laserze, ale mniejsza o to. Po raz pierwszy lutowałem
coś pod mikroskopem 25x, ale upakowałem całość we wtyczce ;-)
Działa ok, ale mam taką siurpryzę, by program do sterowania tego
automatycznie startował, jak załączę urządzenie do PCta. Na razie
wystarczy mi pod Windowsa, ale do Linuxa tyż by się przydało. Wie ktoś
coś na ten temat?
Waldek
Piotr Drobek - 08-12-2006 10:45
> Mam zrobione ustrojstwo na USB, sterowane przez BitBangMode. W sumie
> jest to lampka na laserze, ale mniejsza o to. Po raz pierwszy lutowałem
> coś pod mikroskopem 25x, ale upakowałem całość we wtyczce ;-)
> Działa ok, ale mam taką siurpryzę, by program do sterowania tego
> automatycznie startował, jak załączę urządzenie do PCta. Na razie
> wystarczy mi pod Windowsa, ale do Linuxa tyż by się przydało. Wie ktoś
> coś na ten temat?
Napisz serwis albo aplikacje ktora staruje zaraz po uruchomieniu PC'ta,
najprosciej bedzie Ci pod Delphi i obsluz komunikat WM_DEVICECHANGE w
procedurze obslugi tego komunikatu sprawdz VID i PID urzadzenia i porównaj
ze swoim, jezeli sie zgadza to uruchomisz wlasciwą aplikacje obslugujacą
Twoje urzadzenie , i taka sama procedura przy odlaczeniu urzadzenia,
wysylasz do swojej aplikacji komunikat WM_CLOSE. Dla przykladu kawalek kodu
w C++, akurat tutaj operuje na uchwycie do urzadzenia.....
BOOL CAALTDlg::OnDeviceChange(UINT wParam,DWORD lParam)
{
if(!lParam) return TRUE;
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
if (lpdb->dbch_devicetype == DBT_DEVTYP_HANDLE )
{
PDEV_BROADCAST_HANDLE lpdbi = (PDEV_BROADCAST_HANDLE)lParam;
if(lpdbi->dbch_handle==hDevice)
{
switch(wParam)
{
case DBT_DEVICEREMOVECOMPLETE:
if (IDYES == AfxMessageBox("USB Device has been Removed !
Are You Sure you want to close application?",MB_YESNO))
{
m_bAppDestroy = TRUE;
OnOK();
}
return TRUE;
default:
return TRUE;
}
}
}
return TRUE;
}
Waldemar - 08-12-2006 13:45
Piotr Drobek schrieb:
>> Mam zrobione ustrojstwo na USB, sterowane przez BitBangMode. W sumie
>> jest to lampka na laserze, ale mniejsza o to. Po raz pierwszy lutowałem
>> coś pod mikroskopem 25x, ale upakowałem całość we wtyczce ;-)
>> Działa ok, ale mam taką siurpryzę, by program do sterowania tego
>> automatycznie startował, jak załączę urządzenie do PCta. Na razie
>> wystarczy mi pod Windowsa, ale do Linuxa tyż by się przydało. Wie ktoś
>> coś na ten temat?
>
> Napisz serwis albo aplikacje ktora staruje zaraz po uruchomieniu PC'ta,
> najprosciej bedzie Ci pod Delphi i obsluz komunikat WM_DEVICECHANGE w
> procedurze obslugi tego komunikatu sprawdz VID i PID urzadzenia i porównaj
> ze swoim, jezeli sie zgadza to uruchomisz wlasciwą aplikacje obslugujacą
> Twoje urzadzenie , i taka sama procedura przy odlaczeniu urzadzenia,
> wysylasz do swojej aplikacji komunikat WM_CLOSE. Dla przykladu kawalek kodu
> w C++, akurat tutaj operuje na uchwycie do urzadzenia.....
dzięki!! Zaraz wypróbuję czy działa.
Waldek
Piotr Drobek - 08-12-2006 14:46
Znalazlem bardziej szczegolowy przyklad chyba w sam raz dla Ciebie musisz
znac GUID urzadzenia zazwyczaj podany w INF do sterownika....
http://www.codeproject.com/useritems/HwDetect.asp
Waldemar - 08-12-2006 15:45
Piotr Drobek schrieb:
> Znalazlem bardziej szczegolowy przyklad chyba w sam raz dla Ciebie musisz
> znac GUID urzadzenia zazwyczaj podany w INF do sterownika....
>
http://www.codeproject.com/useritems/HwDetect.aspjuż częściowo mi się udało uruchomić mieszankę twojego kodu i tego z
codeproject. Niestety jeszcze nie na 100%. Moje ustrojstwo, jako że
bazowane na FT232R manifestuje się jako serial port (no i dobrze), ale
jeszcze nie mogłem się dobrać do VID, PID i Product Description.
Ponieważ nie mam zamiaru kupować VID zależy mi właśnie na Product
Description by odróżnić moje od niemojego ;-) Ale początek zrobiłem i
będę dalej próbował.
Może zrobię tak, że jak detekcja przejdzie, to odpytam drania na
okoliczność Product Code przez FTD2XX, powinno się udać.
Dzięki jeszcze raz.
Waldek
mareks - 08-12-2006 20:45
Albo mozna zaprogramowac device name i sprawdzac czy to twoj lub nie twoj -
ja wlasnie tak rozpoznaje swoje urzadzenie
pzdr
marek
Użytkownik "Waldemar" <waldemar@zedat.fu-berlin.de> napisał w wiadomości
news:4ttao6F15ida4U6@mid.uni-berlin.de...
> Piotr Drobek schrieb:
>> Znalazlem bardziej szczegolowy przyklad chyba w sam raz dla Ciebie musisz
>> znac GUID urzadzenia zazwyczaj podany w INF do sterownika....
>>
http://www.codeproject.com/useritems/HwDetect.asp>
> już częściowo mi się udało uruchomić mieszankę twojego kodu i tego z
> codeproject. Niestety jeszcze nie na 100%. Moje ustrojstwo, jako że
> bazowane na FT232R manifestuje się jako serial port (no i dobrze), ale
> jeszcze nie mogłem się dobrać do VID, PID i Product Description. Ponieważ
> nie mam zamiaru kupować VID zależy mi właśnie na Product Description by
> odróżnić moje od niemojego ;-) Ale początek zrobiłem i będę dalej
> próbował.
> Może zrobię tak, że jak detekcja przejdzie, to odpytam drania na
> okoliczność Product Code przez FTD2XX, powinno się udać.
> Dzięki jeszcze raz.
>
>
> Waldek
Waldemar - 08-12-2006 20:45
mareks schrieb:
> Albo mozna zaprogramowac device name i sprawdzac czy to twoj lub nie twoj -
> ja wlasnie tak rozpoznaje swoje urzadzenie
no tak właśnie robię. Problem jest taki: dostaję message, że ustrojstwo
zostało podłączone. Fajnie. Enumeryzuje się jako comport, bo w sumie nim
jest, choć COMa nie używam (lecę w trybie bitbang). W obsłudze
wiadomości OnDeviceChange chcę odczytać device name, ale enumeracja
jeszcze nie jest zakończona i driver FTD2XX zgłasza handle error. Muszę
poczekać 5s i dopiero potem sprawdzać. Ale tak nawet działa, zrobiłem
timeout 5s na timerze i inicjalizację do skutku. Trochę się jeszcze
gździ, jak podłączę 3 różne ustrojstwa, ale już w sumie nieźle działa.
Waldek
Jurek Szczesiul - 09-12-2006 13:45
Fri, 08 Dec 2006 20:41:48 +0100, na pl.misc.elektronika, Waldemar
napisał(a):
> mareks schrieb:
>> Albo mozna zaprogramowac device name i sprawdzac czy to twoj lub nie twoj -
>> ja wlasnie tak rozpoznaje swoje urzadzenie
>
> W obsłudze
> wiadomości OnDeviceChange chcę odczytać device name, ale enumeracja
> jeszcze nie jest zakończona i driver FTD2XX zgłasza handle error.
Cześć. U siebie nie używałem WM_DEVICECHANGE tylko (w timerze) funkcji
otwierającej FT_W32_CreateFile z flagą FT_OPEN_BY_DESCRIPTION. W momencie
zwrotu prawidłowego uchwytu aplikacja wie, że kostka jest gotowa do użycia
(później jest cały czas sprawdzany Ft_result , jeśli dostajemy false -
urządzenie zostało odłączone i aplikacja znów przechodzi do trybu
cyklicznego wywoływania) .
--
Pozdrowienia
Jurek Szczesiul
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl