automatyczny start programu USB device

Dec 07, 2006 7 Replies

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


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; }

Piotr Drobek schrieb:

dzięki!! Zaraz wypróbuję czy działa.

Waldek

Znalazlem bardziej szczegolowy przyklad chyba w sam raz dla Ciebie musisz znac GUID urzadzenia zazwyczaj podany w INF do sterownika....

formatting link

Piotr Drobek schrieb:

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

Albo mozna zaprogramowac device name i sprawdzac czy to twoj lub nie twoj - ja wlasnie tak rozpoznaje swoje urzadzenie

pzdr

marek

U¿ytkownik "Waldemar" snipped-for-privacy@zedat.fu-berlin.de> napisa³ w wiadomo¶ci news: snipped-for-privacy@mid.uni-berlin.de...

mareks schrieb:

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

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

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) .

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required