RTV forum PL | NewsGroups PL

Jak skonfigurować automatyczny start programu przy podłączeniu urządzenia USB?

automatyczny start programu USB device

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować automatyczny start programu przy podłączeniu urządzenia USB?

Waldemar
Guest

Thu Dec 07, 2006 10:20 am   



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 Wink
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
Guest

Fri Dec 08, 2006 10:10 am   



Quote:
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 Wink
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
Guest

Fri Dec 08, 2006 11:09 am   



Piotr Drobek schrieb:
Quote:
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 Wink
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
Guest

Fri Dec 08, 2006 1:51 pm   



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
Guest

Fri Dec 08, 2006 3:22 pm   



Piotr Drobek schrieb:
Quote:
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 Wink 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
Guest

Fri Dec 08, 2006 8:10 pm   



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...
Quote:
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 Wink 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
Guest

Fri Dec 08, 2006 8:41 pm   



mareks schrieb:
Quote:
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
Guest

Sat Dec 09, 2006 1:31 pm   



Fri, 08 Dec 2006 20:41:48 +0100, na pl.misc.elektronika, Waldemar
napisał(a):

Quote:
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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować automatyczny start programu przy podłączeniu urządzenia USB?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map