2012-05-02 12 views
13

Hallo Ich bin neu in der Steuerung von Hardware mit einer USB-Verbindung. Ich habe einen Arduino UNO Microcontroller und suchte nach Ressourcen, um mich zu starten. Ich programmiere in C# (Visual Studio 2010) und frage mich, ob es einige Grundlagen gibt, die ich zum Einrichten/Testen meiner Verbindung verwenden könnte. Ich bin auf der Suche nach etwas so einfach wie ein Kontrollkästchen in meiner WinForm, die den Digital-I/O-Pin auf dem Arduino zwischen hoch und niedrig schaltet. Ich konnte noch nicht viel anfangen.Arduino UNO Grundlagen für C#

Vielen Dank im Voraus.

Antwort

6

Ich bin sicher, Sie wissen, dass Arduino ein paar Beispiele, die Sie mit C#

Here's their C# page

+0

aus irgendeinem Grund, meine Suche mich nie die Seite bekam. Vielen Dank. – ikathegreat

5

Da Sie Visual Studio verwenden können, verwenden, können Sie in diesem kühlen Visual Studio Plugin interessiert sein Arduino Entwicklung. http://www.visualmicro.com

11

Es gibt viele Möglichkeiten, einen Befehl vom PC an ein Arduino zu senden. Sandeep Bansil bietet ein gutes Beispiel für das Anschließen und Lesen einer seriellen Schnittstelle.

Unten ist ein Arbeitsbeispiel zum Schreiben in eine serielle Schnittstelle basierend auf dem Status eines Kontrollkästchens in einem Windows-Formular und wie die Anfrage vom PC auf dem Arduino zu verarbeiten.

Dies ist ein ausführliches Beispiel, es gibt sauberere Lösungen, aber das ist klarer.

Im Beispiel wartet das Arduino entweder auf ein 'a' oder 'b' vom PC. Der PC sendet ein "a", wenn ein Kontrollkästchen aktiviert ist und sendet ein "b", wenn ein Kontrollkästchen deaktiviert ist. Das Beispiel nimmt digitalen Pin 4 auf dem Arduino an.

Arduino Code

#define DIGI_PIN_SOMETHING 4 
unit8_t commandIn; 
void setup() 
{ 
    //create a serial connection at 57500 baud 
    Serial.begin(57600); 
} 

void loop() 
{ 
    //if we have some incomming serial data then.. 
    if (Serial.available() > 0) 
    { 
     //read 1 byte from the data sent by the pc 
     commandIn = serial.read(); 
     //test if the pc sent an 'a' or 'b' 
     switch (commandIn) 
     { 
      case 'a': 
      { 
       //we got an 'a' from the pc so turn on the digital pin 
       digitalWrite(DIGI_PIN_SOMETHING,HIGH); 
       break; 
      } 
      case 'b': 
      { 
       //we got an 'b' from the pc so turn off the digital pin 
       digitalWrite(DIGI_PIN_SOMETHING,LOW); 
       break; 
      } 
     } 
    } 
} 

Windows-C#

Dieser Code in Ihrer Form .cs-Datei gespeichert wird. In diesem Beispiel wird davon ausgegangen, dass Sie Formularereignisse für OnOpenForm, OnCloseForm und das Ereignis OnClick an das Kontrollkästchen angehängt haben. Aus jedem der Ereignisse können Sie die entsprechenden Methoden unten nennen ....

using System; 
using System.IO.Ports; 

class fooForm and normal stuff 
{ 
    SerialPort port; 

    private myFormClose() 
    { 
     if (port != null) 
     port.close(); 
    } 

    private myFormOpen() 
    { 
     port = new SerialPort("COM4", 57600); 
     try 
     { 
      //un-comment this line to cause the arduino to re-boot when the serial connects 
      //port.DtrEnabled = true; 

      port.Open(); 
     } 
     catch (Exception ex) 
     { 
      //alert the user that we could not connect to the serial port 
     } 
    } 

    private void myCheckboxClicked() 
    { 
     if (myCheckbox.checked) 
     { 
      port.Write("a"); 
     } 
     else 
     { 
      port.Write("b");  
     } 
    } 
} 

Tipp:

Wenn Sie eine Nachricht aus dem Arduino dann einen Timer zum Formular hinzufügen mit einem Intervall lesen möchten von 50 oder 100 Millisekunden.

Im OnTick Ereignis des Timer sollten Sie für Daten überprüfen Sie die folgenden Code:

//this test is used to see if the arduino has sent any data 
if (port.BytesToRead > 0) 

//On the arduino you can send data like this 
Serial.println("Hellow World") 

//Then in C# you can use 
String myVar = port.ReadLine(); 

Das Ergebnis wird sein, dass readLine()myVarHello World enthält.

1

Ich habe an einer C# -Bibliothek gearbeitet, um mit Arduinos zu interagieren, es gibt eine Menge guter Code-Beispiele darin und es sollte gut genug kommentiert werden, damit die Dinge Sinn machen, hoffe das hilft!

github repo: https://github.com/qwertykeith/ArduinoLibrary

0

Der grundlegende Weg, um die Kommunikation zwischen PC und Arduino ist 2 Tasten auf dem PC erstellt und Ein-/Ausschalten des Lichts auf Arduino. Verwenden Sie portwrite();

Hier ist die einfachste Demo: https://www.instructables.com/id/C-Serial-Communication-With-Arduino/ Das ist absolut, was Sie wollen!

C# Code:

using System; 
using System.Windows.Forms; 
using System.IO.Ports; 
namespace ledcontrol 
{ 
    public partial class Form1 : Form 
    { 
     SerialPort port; 
     public Form1() 
     { 
      InitializeComponent(); 
      this.FormClosed += new FormClosedEventHandler(Form1_FormClosed); 
      if (port==null) 
      { 
       port = new SerialPort("COM7", 9600);//Set your board COM 
       port.Open(); 
      } 
     } 
     void Form1_FormClosed(object sender,FormClosedEventArgs e) 
     { 
      if(port !=null &&port.IsOpen) 
      { 
       port.Close(); 
      } 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      PortWrite("1"); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      PortWrite("0"); 
     } 
     private void PortWrite(string message) 
     { 
      port.Write(message); 
     } 
    } 
} 

Arduino Skizze:

const int LedPin = 13; 
int ledState = 0; 

void setup() 
{ 
    pinMode(LedPin, OUTPUT); 

    Serial.begin(9600);  
} 

void loop() 
{ 
    char receiveVal;  

    if(Serial.available() > 0) 
    {   
     receiveVal = Serial.read(); 

     if(receiveVal == '1')  
      ledState = 1;  
     else 
      ledState = 0;  
    }  

    digitalWrite(LedPin, ledState); 

    delay(50);  
} 
Verwandte Themen