Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Inicializace USB v C#

Zdravím,
před několika týdny jsem začal programovat pod Windowsem v NET Frameworku. Použitý jazyk je C# - mám poměrně dobrý znalosti klasického Cčka z mikrokontrolérů. Pro programování ve Windows používám IDE studio SharpDevelop, který je téměř identické s Microsoft Visual Studiem, ale je zdarma.

Můj problém tkví v použití a komunikaci se zařízením pomocí USB, kde nechápu jak zařízení v PC nají a jak s ním navázat spojení. Mé zařízení je ve třídě HID (nepotřebuji další ovladače). Na internetu jsem o tom nenašel moc informací, tak se chci zeptat tady, jestli někdo nedělá něco podobného a nepodělil se o své zkušenosti.
Děkuji za jakoukoliv reakci.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Aplikacia moze komunikovat len s ovladacom, ne so zariadenim. Ked chces komunikovat priamo so zariad…
MM.. 02.10.2015 15:15
MM..
Právě že to chci udělat ve třídě HID, kde ovladač netřeba, protože napsat si vlastní ovladač, na to…
antibalda 02.10.2015 15:19
antibalda
Najjednoduchsie je urobit to USB zariadenie tak, aby sa hlasilo trebars ako com port, musi v nom byt…
MM.. 02.10.2015 15:28
MM..
To s tebou souhlasím, že je nejjednodušší, problém je v tom, že bych musel mít v zařízení převodník…
antibalda 02.10.2015 15:31
antibalda
Hlavne, že sem dáš odkaz (ktorý si zrejme ani sám nečítal)... Odkazy a download -> Automator :i:
pme 02.10.2015 15:58
pme
Ten článek jsem samozřejmě četl. Automator jsem si stáhl také, pro inspiraci dobrý - je psaný v C++.…
antibalda 02.10.2015 19:20
antibalda
To si potom musis zistit komunikaciu so zariadenim. Ovladac pozna len VID a PID resp len to co ti ta…
MM.. 02.10.2015 19:26
MM..
Teď mě ještě napadl možný způsob jak to hledat. Nejdříve to najít podle VID a PID a následně se zaří…
antibalda 02.10.2015 19:29
antibalda
Ak to su uplne stejne zariadenia tak programy zvycajne maju v nastaveniach alebo rovno v dialogu vyb…
MM.. 02.10.2015 19:34
MM..
Samozrejme, že zo C# ide volať WinAPI, viď DllImportAttribute Class. poslední
los 02.10.2015 20:17
los

Aplikacia moze komunikovat len s ovladacom, ne so zariadenim. Ked chces komunikovat priamo so zariadenim, musis si napisat ovladac.

Ked ma zariadenie standardnu fcionalitu a teda aj standardny ovladac, napr. klavesnica, tak sa o vsetko stara Win, a aplikaciam dava len spravy o stlacenych klavesach, pricom je uplne jedno ci ta klavesnica je na USB alebo na mimozemskom interface, to je starost ovladaca.
Ak ovladac vytvara nejake standardne zariadenie, napr. UART, tak normalne otvoris UART pomocou CreateFile, zasa ta nezaujima ci ten UART je na PCI alebo USB alebo mimozemskom interface, to je problem ovladaca. Na strane aplikacie ten ovladac vytvoril standardne UART device.

Ak mas nejaky speci ovladac ktory nema standardnu fcionalitu, tak je treba najst si popis k danemu ovladacu a komunikovat s nim pomocou DeviceIoControl fcie a spravnych IOCTL_ kodov (ich definicia zavisi od ovladaca).

Právě že to chci udělat ve třídě HID, kde ovladač netřeba, protože napsat si vlastní ovladač, na to si opravdu netroufnu (zatím). Mě jde spíš o to, jak si v softu nalézt připojené USB zařízení a začít do něj odesílat data nebo je od něj přijímat. Nebude se jednat o závratný velikosti dat (na to ani není HID třída specifikovaná), komunikace bude jen s několika málo bity.

Ten článek jsem samozřejmě četl. Automator jsem si stáhl také, pro inspiraci dobrý - je psaný v C++. Problém bych viděl spíš v hledání USB zařízení podle VID a PID, protože pokud budu mít k počítači ppřipojené dvě zařízení se stejným VID a PID, tak mi to jednoduše nerozpozná. Hledání podle VID a PID ano, ale hledat ještě podle nějakého dalšího parametru, třeba podle jména.

Ak to su uplne stejne zariadenia tak programy zvycajne maju v nastaveniach alebo rovno v dialogu vyber ze s ktorym sa ma pracovat (priklad program co daco robi s diskom - vyberes si najprv v programe ze ktory disk zo zdetekovanych).
Ak su to odlisne zariadenia (odlisna fcia) tak je lepsie dat im odlisne PID. Pripadne este za tym mozno je nejake subdevice ID ale neviem zhlavy co tam ma HID device jake moznosti.

To s tym C# a WinAPI som asi tresol blbost, z C# asi nemozes volat rovno WinAPI, nepouzivaj C# hovadinu ale rob to v C++

Zpět do poradny Odpovědět na původní otázku Nahoru