2008-10-02 15 views
10

Szukam urządzenia, które odczytuje napięcia okablowania za pośrednictwem interfejsu USB i zwraca dane. W jaki sposób chciałbym zaprogramować coś, aby zinterpretować te dane i jakiego języka użyć?

edit: Jeśli to nie pomaga, ten projekt jest opracowanie tachometre cyfrowego dla starszych silników, które nie obsługują kompleksowe port danych ODB2. Dlatego odczyta napięcia na obwodzie prądu stałego i ma dokładny interfejs graficzny. Nie mam absolutnie pojęcia, od czego zacząć, ale jestem zdeterminowany, aby to zadziałało! dotyczy okien.Jak zaprogramować sterownik urządzenia USB dla platformy Windows?

Odpowiedz

3

Spójrz na libusb. Jest dostępny dla systemów Linux i Windows.

8

Cheat and use libusb. Zrobiłem to dla projektu, nad którym pracowałem przez jakiś czas i napisałem aplikację do obsługi danych.

Ostatnio zastanawiałem się nad ponownym napisaniem aplikacji na PC pod numerem wxPython, ponieważ jest ona znacznie szybsza dla programowania GUI.

Sposób wyświetlania/rejestrowania danych? Dostępnych jest wiele opcji. Możesz zrobić całkiem fajne rzeczy (łatwo) z the OpenGL capabilities of wxWidgets, czy to reprezentacja danych 2D czy 3D.

1

Wydaje mi się, że jeśli chcesz odczytać napięcie okablowania, potrzebujesz konwertera A/D. Czy tworzysz własny konwerter A/D? Jeśli tak, to masz do czynienia z ładnym oprogramowaniem układowym po stronie urządzenia, czymś więcej niż sterownik po stronie hosta, o który tutaj pytasz. W przeciwnym razie kupisz konwerter A/C i powinieneś po prostu użyć sterownika dostarczonego przez dostawcę.

6

Jeśli możesz, zasugerowałbym użycie biblioteki takiej jak libusb, jak sugerowali kris i Jon Cage.

Jeśli libusb nie będzie pasował do twoich potrzeb i pracujesz dla Windows, powinieneś zajrzeć do oprogramowania dostarczonego przez Jungo. Ponownie, przenosi oprogramowanie usb do przestrzeni użytkownika, zamiast wymagać rozwoju jądra systemu Windows. (edycja 3: Ilya wskazuje w komentarzu, że Jungo jest również dostępny dla Linuksa)

Jeśli musisz zrobić trochę rozwoju jądra (Windows lub Linux), to C jest całkiem dobrą jedyną dostępną opcją. Zbadaj książkę Rubini pod tytułem Linux dla rozwoju Linuksa. Dla rozwoju sterowników dla Windows mogę polecić książkę this autorstwa Oney. Ale ja bym badał opcję libusb zamiast rozwoju sterowników w obu przypadkach.


Przy okazji. Jeśli wszystko, co cię interesuje, jest w stanie mierzyć napięcia na urządzeniu USB (a pisanie kodu nie jest ważne) istnieje wiele produktów, które mogą to zrobić dla ciebie. Spójrz na niektóre z ofert od National Instruments. Będą one dotyczyły ciężkiej pracy usb i pozyskiwania danych i zapewnią przyjemny interfejs programowania do zastosowania w aplikacji.


(edycja 2) Istnieją również szeregową USB wióry (np. these), które mogą być podłączone bezpośrednio do wbudowany procesor usig tylko UART. Zazwyczaj pochodzą one ze sterownikami.

+0

Narzędzie Jungo jest nie tylko dla systemu Windows, Linux jest również wspierany – Ilya

+0

Dzięki Ilya - odpowiednio zaktualizowany –

+0

+1 za wzmiankę o FTDI; to prawdopodobnie prostsza opcja. –

1

O ile nie zbankrutujesz swojego własnego sterownika USB po stronie oprogramowania układowego, prawdopodobnie Twój chip będzie pochodził ze sterownika dla komputera. Na przykład mikrokontrolery PIC firmy Microchip pochodzą nie tylko z oprogramowania układowego dla PIC, ale ze sterownika Windows. Spodziewam się, że inne układy obsługujące USB również będą miały własne sterowniki.

Należy pamiętać, że podczas interakcji z portem USB bezpośrednio po stronie oprogramowania układowego, po stronie komputera, z którym faktycznie współpracujesz, jest sterownik kontrolera hosta.

2

Ponieważ wciąż poszukujesz urządzenia, które konwertuje napięcia na informacje, sugeruję przyjrzenie się urządzeniom, które implementują interfejs USB-HID (interfejs człowieka), takie jak te found here.

Mają one tę zaletę, że nie wymagają opracowywania sterowników urządzeń ani instalowania sterowników. Są one plug-and-play jako mysz, klawiatura lub dysk flash. Interfejs jest dość ogólny, a większość producentów zapewnia również niezbędne biblioteki do odczytu informacji z urządzenia, powiadamiania o włączeniu/wyłączeniu urządzenia, wykryciu urządzeń itd.

Ponadto, spójrz na this article, który wyjaśnia, jak używać urządzenia HID w C#, na przykład.

Dave

1

Twój Najprostszym rozwiązaniem jest chyba kupić jakiś off-the-shelf urządzenia akwizycji danych. Wiele firm dokonać tego typu rzeczy, ale są czasami przerażająco drogie:

  1. National Instruments
  2. Amplicon
  3. LabJack

Można również tworzyć własne z zestawu, choć nie mogę znaleźć dla ciebie żadnych linków.

Jeśli potrzebujesz czegoś bardziej niestandardowego, możesz użyć EZ-USB lub PIC. Zapewniają one sterowniki USB (przynajmniej dla systemu Windows), które umożliwiają interakcję z urządzeniem bez pisania sterowników.

Z większością z nich masz dość szeroki wybór języków programowania, napisałem oprogramowanie do komunikacji z urządzeniami EZ-USB od Visual Basic 6 w przeszłości.

+0

NI ma moduły OEM, które mogą to zrobić za rozsądną cenę (<200 USD). Będziesz mieć dodatkowe kanały analogowe i wejścia cyfrowe do zabawy, jeśli chcesz rozszerzyć funkcjonalność. Sprawdź USB-6008 OEM. – Nick

1

Większość mikrokontrolerów ma wbudowane ADC, a tona z nich ma również wbudowany podsystem USB. Cypress, PIC, AVR przychodzą na myśl. Ilekroć pracuję z USB dla własnych projektów, używam pyusb i wxPython. Sprawiają, że praca staje się łatwa, chociaż istnieje dość trudna początkowa krzywa uczenia się.

Bezwstydna wtyczka na bok, napisałem mały sterownik python z pyusbem do urządzenia USB-LCD. Możesz sprawdzić mój kod źródłowy here.

+0

Po prostu, że twój link jest zepsuty. – Ponkadoodle

1

Używam osobiście mikrochipów PIC - mają konwertery AD/DA, porty USB, darmowe sterowniki i boot loader - a wszystko to za mniej niż 4 USD. Po podłączeniu takiego urządzenia otrzymujesz dodatkowy port COM - reszta jest banalna.

1

Nie mówisz, na jakiej platformie się przyglądasz. Jeśli kierujesz reklamy na system Windows, USB Revealed to świetne odniesienie.

1

Aby zobaczyć sprzęt, należy zapoznać się z produktami FTDI.

Jeśli masz sprzęt i chcesz uzyskać do niego dostęp w systemie Windows, niedawno odkryłem WinUSB. Jeśli tego potrzebujesz, spójrz na this white paper.

0

Oprócz WinUSB, libusb i Jungo istnieje jeszcze jedna możliwość programowania urządzeń USB z trybu użytkownika - User-Mode Driver Framework (UMDF).

Zapisywanie sterownika UMDF polega zasadniczo na tworzeniu komponentu COM w procesie z użyciem ulubionych narzędzi.

Powiązane problemy