2010-07-08 13 views
43

Ich würde gerne anfangen, verwalteten Code für externe Geräte und Sensoren zu schreiben. Gibt es Geräte, die in den Sinn kommen, die gegen die Verwendung von .NET codiert werden können? Irgendwelche Vorschläge?Coole Hardware/Geräte, die in .NET programmiert werden können?

Edit: Die Hauptsache ich zu tun bin versucht lernen, wie Geräteprogrammierung funktioniert. Das ist meiner Meinung nach kein besserer Weg als etwas Spaß und Cool zu machen.

+1

Dies sollte wahrscheinlich eine Gemeinschaft wikki sein, da es keine einzige Antwort gibt. Gute Frage auch. – FrustratedWithFormsDesigner

+1

Es hat eine Antwort, denn ich bin auf der Suche nach dem, mit dem ich Geräteprogrammierung lernen kann. :-) – Achilles

+1

Ich kann mir vorstellen, dass es viele gute gibt, aus denen man wählen kann. – FrustratedWithFormsDesigner

Antwort

6
+3

WTF! Ich habe meinen Tee lachend verschüttet. Was kommt als nächstes, "USB Nuclear Reactor"? –

+0

@HeavyWave, jetzt werden Sie lächerlich – jlafay

+0

Das Hinzufügen von USB zu einem Kernreaktor wird seine Komplexität und Menge an Dokumentation verdoppeln. – Kaz

3

Zwei Produkte, die es super einfach Schnittstelle mit externen Geräten zu machen sind Phidgets und die Serializer. Phidgets sind mit einer einfachen .NET API ausgestattet und enthalten eine Vielzahl von Hardware- und Software-Sensoren und Controllern. Für viele coole Phidgets-Projekte und .NET-Hardware-Projekte im Allgemeinen, schau dir die Coding4Fun Blog an.

Der Serializer, auf der anderen Seite, in Richtung Robotik ausgerichtet, sondern auch mit einem großen .NET API kommt. Für eine Demonstration des Serialisierers gibt es einen tollen Artikel in Robot Magazine Issue 19 von Clint Rutkas (einer der Verantwortlichen von Coding4Fun).

TinyCLR, auf der anderen Seite bietet drei verschiedene Geräte in ihrem FEZ-Serie (Freakin Easy), auf den .NET Framework und laufen unabhängig von einem PC mit Sensoren und Geräten Schnittstelle programmiert werden kann.

1

Die Liste wird sehr groß sein, sehe ich keinen Grund, warum ein Gerät nicht von .NET gesteuert werden. In einem letzten Ausweg Lösung mit DllImport und direkte IoControl Anrufe an die Gerätetreiber (vorausgesetzt, Sie kennen die Schnittstellen) funktionieren gut.

+1

Ich denke, er fragt nach denen mit rein verwalteten API's –

+0

Das ist wahr: Ich habe ein komplettes industrielles Kontrollsystem (ein System mit Motoren, Robotern, Sensoren, Kameras, Ventilen) mit C# und den System.IO.Ports geschrieben. SerialPort-Klasse. – codekaizen

2

Sie auf der Arduino oder eine Variante aussehen sollten - es kann eine Schnittstelle mit dem USB-Anschluss und die Steuerung selbst ist in einer C-Stil Sprache programmiert.

Sie können dann eine Schnittstelle mit (im Wesentlichen) jeder Sensor/Gerät/Werkzeug, das Sie wollen, und Sie können Code in jeder beliebigen Sprache schreiben, die mit der USB-Schnittstelle können.

+1

Ich würde sagen, das ist die beste Antwort auf die Frage. Sie werden nicht viele, wenn überhaupt, Embedded-Systeme finden, die in .NET programmiert werden können, aber Sie werden eine Menge finden, die mit einem Host-Computer mit .NET interagieren kann. – rmeador

+0

Ja, ich denke (wie Peter Forss darauf hingewiesen hat), Mindstorms NXT ist so ziemlich "es", soweit es Consumer-Grade-Zeug geht, das in .NET programmiert werden kann.Niemals benutzt, und zu was, $ 200 + USD? Ich denke, der ~ 30 $ Arduino könnte eine bessere Wahl sein, wenn Sie ein Budget haben. –

2

hatte ich eine Menge Spaß Programmierung mit dem OCZ NIA. Es ist im Wesentlichen EEG, dass Sie Biofeedback in Ihrer Software verwenden können. Ich habe einen Code geschrieben, der deine Alpha und Beta Gehirnwellen in MIDI und DMX für Synthesizer und Lichtsteuerung übersetzt. Die Möglichkeiten sind jedoch endlos.

Es verwendet USB HID, die viele Geräte verwenden, so war es eine gute Einführung.Es gibt eine Handvoll Code bei http://code.google.com/p/nia-brew/, und Sie werden die OCZ NIA Foren sehr hilfreich finden, um anzufangen.

+0

Das sieht cool aus. Gibt es eine API für die NIA? – FrustratedWithFormsDesigner

+1

Nicht offiziell, aber der Code auf der rechten Seite dieser Seite, die ich Ihnen gesendet habe, hat den ganzen Code, der benötigt wird, um loszulegen. Insbesondere hat NiaSharpReader eine C# -Quelle, die Sie als einen großen Sprungpunkt verwenden können. – Brad

-1

Arduino ist einer der besseren da draußen denke ich.

14

Die Netduino kam gerade heraus, und es verwendet das .NET Micro Framework: ->http://www.netduino.com/

+1

Ich habe mein Netduino jetzt schon eine Weile, und ich liebe es. Es macht viel Spaß, endlich in Hardware zu kommen, ohne eine andere Sprache zu lernen. – UnkwnTech

8

TinyCLR produziert verschiedene Bretter, die die .NET Micro Framework, das populärste ist, um die Fez Domino unterstützen:

FEZ (Freakin' Easy!) ist eine kleine Open-Source-Board mit Microsoft .NET Micro Framework. Dies bedeutet, dass Sie mit der Programmiersprache C# unter dem freien Microsoft Visual C# express Code viel effizienter schreiben können. Erstellen Sie Ihre nächsten Projekte in wenigen Minuten, indem Sie FEZ Domino mit einem der Schilde oder den vielen verfügbaren Komponenten verbinden. Inklusive USB-Kabel.

Viele Bibliotheken sind bereits enthalten wie FAT-Dateisystem, Threading, USB-Client, USB-Host, UART, SPI, I2C, GPIO, PWM, ADC, DAC und viele mehr.

FEZ bietet viele Funktionen, die nicht in Arduino, BASIC STAMP und andere gefunden:

  • Basierend auf Microsoft .NET Micro Framework.
  • Läuft auf 72MHz NXP ARM-Prozessoren.
  • Unterstützt Laufzeit-Debugging (Haltepunkte, variable Inspektion, Stepping, etc.)
  • Verwendung Visual C# 2010 Express Edition für die Entwicklung.
  • Erweiterte Funktionen wie FAT, USB-Gerät und USB-Host.
  • Einfache Upgrades auf Hardware wie EMX.
  • Open-Source-Hardware-Design-Dateien.
  • Verwenden Sie vorhandene Abschirmungen und Halteplatten.
  • Basiert auf der USBizi chipset (ideal für den kommerziellen Einsatz).
  • FEZ Mini ist BS2 Pin-out-kompatibel mit zusätzlichen I/Os.
  • FEZ Domino ist Arduino Pin-out-kompatibel mit zusätzlichen I/Os.
0

Es gibt bereits another answer einen USB Raketenwerfer ... jedoch zu erwähnen, verknüpft der Code gibt es mehr als sechs Jahre alt, und ich konnte es nicht mit my model zu arbeiten.

Also schrieb ich meine eigene Bibliothek (in .NET 4.0): MissileSharp
Für alle Interessierten, der vollständige Quellcode ist here.

Dies war mein erster Versuch überhaupt, Code für ein Hardwaregerät zu schreiben.
Für Lernzwecke, sah ich den Code der project in the other answer verbunden, und unter dem Code der "offiziellen" Steuerungssoftware, die Sie von der vendor's site (direct link) herunterladen können - der Quellcode ist nicht direkt verfügbar, aber die Software ist in .NET geschrieben, so dass Sie den Code mit Reflector, ILSpy oder einem ähnlichen Tool ansehen können).
Ich habe HidLibrary verwendet, um die eigentlichen Befehle an das Gerät zu senden.

1

Tinkerforge

ich dies noch nicht versuchen, aber ich möchte etwas mehr Hardware-Programmierung tun, und ich denke über Tinkerforge verwenden.

Kurze Einführung der Wikipedia page(Betonung von mir):

Tinkerforge ist eine Plattform von stapelbaren Mikrocontroller-Bausteine ​​(Ziegel), die verschiedenen Module (Bricklets) steuern kann. Die primäre Kommunikationsschnittstelle der Building Blocks kann mit Master Extensions um erweitert werden. Die Hardware kann durch externe Programme in C, C++, C#, Object Pascal, Java, PHP, Python, Ruby und VB.NET über eine USB- oder Wifi-Verbindung gesteuert werden und läuft unter Windows, Linux und Mac OS X. Diese nicht eingebettete Programmierung Ansatz beseitigt die typischen Anforderungen und Einschränkungen (Entwicklungswerkzeuge, begrenzte Verfügbarkeit von RAM und Rechenleistung) von konventionellen eingebetteten Software-Entwicklung (CFR Arduino). Tinkerforge Hardware und Software sind beide Open Source, und alle Dateien werden auf GitHub gehostet.

Soweit ich verstehe, ist dies mehr High-Level als, sagen wir, das Arduino.
Ich kann wahrscheinlich mehr über die tatsächliche Hardware-Programmierung von Arduino lernen, aber ich will/brauche kein tiefgreifendes Wissen über Low-Level-Hardware-Programmierung - ich möchte nur etwas cooles mit Hardware erstellen.

Verwandte Themen