2010-07-08 7 views
43

Mi piacerebbe iniziare a scrivere codice gestito per dispositivi e sensori esterni. Ci sono dei dispositivi che vengono in mente che possono essere codificati contro l'uso di .NET? Eventuali suggerimenti?Cool Hardware/Dispositivi che possono essere programmati in .NET?

Modifica: La cosa principale che sto cercando di fare è imparare come funziona la programmazione del dispositivo. Non è un modo migliore di farlo a parer mio che provare a fare qualcosa di divertente e fico.

+1

Questo dovrebbe probabilmente essere un wikki di comunità, in quanto non esiste una risposta singola. Buona domanda, anche. – FrustratedWithFormsDesigner

+1

Ha una risposta, perché sto cercando quello con cui posso imparare a programmare il dispositivo. :-) – Achilles

+1

Immagino che ci siano molti buoni tra cui scegliere. – FrustratedWithFormsDesigner

risposta

6
+3

WTF! Ho versato il mio tè ridendo. Quali sono le prospettive, "USB Nuclear Reactor"? –

+0

@HeavyWave, ora stai diventando ridicolo – jlafay

+0

L'aggiunta di USB a un reattore nucleare raddoppierà la sua complessità e la quantità di documentazione. – Kaz

3

Due prodotti che lo rendono super facile di interfacciarsi con dispositivi esterni sono Phidgets e il Serializer. I phidgets sono dotati di una semplice API .NET e includono una varietà di sensori e controller hardware e software. Per un sacco di fantastici progetti Phidgets e progetti hardware .NET in generale, consulta lo Coding4Fun Blog.

Il serializzatore, d'altra parte, è orientato verso la robotica, ma è dotato anche di un'ottima API .NET. Per una dimostrazione del Serializer, c'è un grande articolo in Robot Magazine Issue 19 di Clint Rutkas (uno dei responsabili di Coding4Fun).

TinyCLR, d'altra parte, fornisce tre diversi dispositivi nella loro serie FEZ (Freakin 'Easy) che possono essere programmati utilizzando il framework .NET ed eseguire indipendentemente da un PC per interfacciarsi con sensori e dispositivi.

1

L'elenco sarà enorme, non vedo alcun motivo per cui un dispositivo non possa essere controllato da .NET. In una soluzione di ultima istanza che utilizza DllImport e le chiamate dirette di IoControl ai driver di dispositivo (presumendo che si conoscano le interfacce) funzionerà bene.

+1

Penso che chieda quelli con API puramente gestite –

+0

Questo è vero: ho scritto un intero sistema di controllo industriale (un sistema che utilizza motori, robot, sensori, telecamere, valvole) usando C# e System.IO.Port. SerialPort class. – codekaizen

2

Si dovrebbe guardare l'Arduino o qualche variante - è in grado di interfacciarsi con la porta USB e il controller stesso è programmato in un linguaggio C-style.

È quindi possibile interfacciare (sostanzialmente) qualsiasi sensore/dispositivo/strumento desiderato e scrivere codice in qualsiasi lingua che possa interfacciarsi con l'USB.

+1

Direi che questa è la migliore risposta alla domanda. Non troverai molti sistemi incorporati che possano essere programmati in .NET, ma troverai molti elementi che possono interfacciarsi con un computer host che esegue .NET. – rmeador

+0

Sì, penso (come ha sottolineato Peter Forss) Mindstorms NXT è praticamente "it", per quanto riguarda le cose di livello consumer che possono essere programmate in .NET.Non li ho mai usati, e a cosa, $ 200 + USD? Penso che Arduino ~ $ 30 potrebbe essere una scelta migliore se hai un budget limitato. –

2

ho avuto un sacco di programmazione divertimento con l'OCZ NIA. È essenzialmente EEG che ti permette di usare il biofeedback nel tuo software. Ho scritto un codice che traduce le onde cerebrali alfa e beta in MIDI e DMX per sintetizzatore e controllo dell'illuminazione. Le possibilità però sono infinite.

Usa HID USB che molti dispositivi utilizzano, quindi è stata una buona introduzione.C'è una manciata di codice su http://code.google.com/p/nia-brew/, e troverai i forum OCZ NIA molto utili per iniziare.

+0

Sembra bello. C'è una API per la NIA? – FrustratedWithFormsDesigner

+1

Non ufficialmente, ma il codice a destra della pagina che ti ho inviato ha tutto il codice necessario per iniziare. In particolare, NiaSharpReader ha una fonte C# che puoi usare come un grande punto di partenza. – Brad

-1

Arduino è uno dei migliori là fuori che penso.

-1

So che hai detto .Net, ma l'Arduino è un dispositivo divertente con cui giocare. http://www.arduino.cc/

14

Il Netduino appena uscito, e utilizza il .NET Micro Framework: ->http://www.netduino.com/

+1

Ho avuto il mio Netduino per un po 'ora, e lo adoro. È molto divertente arrivare finalmente all'hardware senza dover imparare un'altra lingua. – UnkwnTech

8

TinyCLR produce diverse schede differenti che supportano il .Net Micro Framework, il più popolare è il Fez Domino:

FEZ (Freakin' facile!) è una piccola scheda open-source che esegue Microsoft .NET Micro Framework. Ciò significa che è possibile scrivere codice con molta più efficienza utilizzando il linguaggio di programmazione C# con Microsoft Visual C# Express gratuito. Crea i tuoi prossimi progetti in pochi minuti collegando FEZ Domino a uno degli scudi o ai numerosi componenti disponibili. Include cavo USB.

Molte librerie sono già incluse come file system FAT, threading, client USB, host USB, UART, SPI, I2C, GPIO, PWM, ADC, DAC e molti altri.

FEZ offre molte caratteristiche che non si trovano in Arduino, BASIC STAMP e altri:

  • Sulla base di .NET Micro Framework di Microsoft 'di.
  • Funzionamenti su processori NXP ARM 72Mhz.
  • Supporta il debug in fase di esecuzione (punti di interruzione, ispezione variabile, stepping, ecc.)
  • Utilizzare Visual C# 2010 Express Edition per lo sviluppo.
  • Funzionalità avanzate come FAT, dispositivo USB e host USB.
  • Facilmente aggiornabile all'hardware come EMX.
  • File di progettazione hardware open source.
  • Utilizzare gli schermi e le schede del supporto esistenti.
  • Basato su USBizi chipset (ideale per uso commerciale).
  • FEZ Mini è BS2 pin-out compatibile con I/O extra.
  • FEZ Domino è Arduino pin-out compatibile con I/O extra.
0

C'è già another answer menzionare un Lanciamissili USB ... tuttavia, il codice legato v'è più di sei anni e non ho potuto farlo funzionare con my model.

Così ho scritto la mia libreria (in NET 4.0): MissileSharp
Per chiunque sia interessato, il codice sorgente completo è here.

Questo è stato il mio primo tentativo di scrivere codice per un dispositivo hardware.
a fini di apprendimento, ho guardato il codice della project collegato in the other answer, e il codice del software "ufficiale" di controllo che è possibile scaricare dal vendor's site (direct link - il codice sorgente non è direttamente disponibile, ma il software è scritto in .NET, quindi puoi guardare il codice con Reflector, ILSpy o uno strumento simile).
Ho utilizzato HidLibrary per inviare i comandi effettivi al dispositivo.

1

Tinkerforge

non ho ancora provato questo, ma mi piacerebbe fare un po 'di programmazione hardware e sto pensando di usare Tinkerforge.

Breve introduzione dal Wikipedia page(enfasi da me):

Tinkerforge è una piattaforma di impilabili building blocks microcontrollore (mattoni) che può comandare diversi moduli (Bricklets). L'interfaccia di comunicazione principale dei blocchi predefiniti può essere estesa utilizzando le estensioni master. L'hardware può essere controllato da programmi esterni scritti in C, C++, C#, Object Pascal, Java, PHP, Python, Ruby e VB.NET tramite connessione USB o Wi-Fi e in esecuzione su Windows, Linux e Mac OS X. Questo approccio di programmazione non incorporato elimina i requisiti e le limitazioni tipiche (strumenti di sviluppo, disponibilità limitata di di RAM e potenza di elaborazione) del convenzionale sviluppo software integrato (cfr Arduino). L'hardware e il software di Tinkerforge sono entrambi Open Source e tutti i file sono ospitati su GitHub.

Per quanto ho capito, questo è più di alto livello di, diciamo, l'Arduino.
Probabilmente posso imparare di più sulla programmazione hardware effettiva utilizzando Arduino, ma non voglio/ho bisogno di una profonda conoscenza della programmazione hardware di basso livello - Voglio solo creare qualcosa di interessante con l'hardware.