Pages: [1]   Go Down
Author Topic: Arduino Diecimila + Visual Studio 2010  (Read 1734 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich habe ein Programm in VB2010, mit dem ich die Ports auf meinem Board ansteuern kann. Das funktioniert auch super...nun würde ich gerne die Daten die ich an einem Port auslese an mein VB Programm schicken! Den Port zum auslesen habe ich bereits vorbereitet, d.h. das Funktioniert auch, aber ich habe keine Ahnung wie ich den Code schreiben soll, der dann die ausgelesenen Daten an das VB Prog schickt.

Und ich wollte dann die ausgelesenen Daten im VB-Prog in einer Text Box anzeigen lassen...


Hier der Code für's Board:


int LED=13;
int IO_5=5;
int input=0;
int pin2=2;
int value;

void setup()
{
  Serial.begin(9600);
  pinMode(LED,OUTPUT);  
  pinMode(IO_5,OUTPUT);
  pinMode(pin2,INPUT);
}


void loop()
{

  input=Serial.read();
  value=digitalRead(pin2);
  
  switch(input)
  {
    case 10:
    digitalWrite(LED,HIGH);
    break;
    
    case 20:
    digitalWrite(LED,LOW);
    break;
  
    case 30:
    digitalWrite(IO_5,HIGH);
    break;
    
    case 40:
    digitalWrite(IO_5,LOW);
    break;
    
    case 50:
    Serial.println(value)
    
    case 100:
    digitalWrite(LED,LOW);
    digitalWrite(IO_5,LOW);
    break;
    
  }  


}



hier der Code vom VB-Prog:

Imports System.IO.Ports.SerialPort

Public Class Form1

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(100))
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Verfügbare Comports suchen
        Dim ports As String() = GetPortNames()
        Dim Port As String

        'Combobox richtig sortieren
        ComboBox_Comport.Items.Clear()

        If ports.Length > 0 Then

            ' für alle COM-Nr. < 10 ein Leerzeichen einfügen
            For ii As Integer = 0 To (ports.Length - 1)
                If CInt(ports(ii).Substring(3)) < 10 Then
                    ports(ii) = "COM " & ports(ii).Substring(3)
                End If
            Next

            Array.Sort(ports)

            ' das Leerzeichen in "COM x" wieder entfernen
            For ii As Integer = 0 To (ports.Length - 1)
                ports(ii) = "COM" & ports(ii).Substring(3).Trim
            Next

        End If

        'In die Combobox übernehmen
        For Each Port In ports
            ComboBox_Comport.Items.Add(Port)
        Next Port

        'Buttons setzen
        Button_Disconnect.Enabled = False
        Button_Connect.Enabled = False

    End Sub

    Private Sub ComboBox_Comport_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_Comport.SelectedIndexChanged

        'Comport auswählen
        If ComboBox_Comport.SelectedItem <> "" Then
            Button_Connect.Enabled = True
        End If

    End Sub

    Private Sub Button_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Connect.Click

        'Comport verbinden
        Try

            'Buttons freigeben-/ sperren
            Button_Connect.Enabled = False
            Button_Disconnect.Enabled = True
            ComboBox_Comport.Enabled = False

            'Comport Einstellungen
            SerialPort1.PortName = ComboBox_Comport.Text
            SerialPort1.BaudRate = 9600
            SerialPort1.Open()

            Timer1.Enabled = True

        Catch ex As Exception

            'Fehlermeldung
            MessageBox.Show("Achtung die Schnittstelle konnte nicht geöffnet werden! " + e.ToString _
                       , "Ausnahmefehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Button_Connect.Enabled = True
            Button_Disconnect.Enabled = False
            ComboBox_Comport.Enabled = True

        End Try

    End Sub

    Private Sub Button_Disconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Disconnect.Click

        'Verbindung trennen
        SerialPort1.Write(ChrW(100))
        Timer1.Enabled = False
        Button_Connect.Enabled = True
        Button_Disconnect.Enabled = False
        ComboBox_Comport.Enabled = True
        SerialPort1.Close()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(10))
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(20))
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(30))
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(40))
        End If
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Write(ChrW(50))


        End If
        TextBox1.Text = SerialPort1.ReadLine


    End Sub
End Class




Vielleicht kann mir ja jemand helfen, bin halt noch newbee auf dem Gebiet :-)

Danke im Voraus

Gruß SilentForce
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Receiving Data From A Microcontroller:
http://www.rentron.com/receiving_data.htm
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

also, das hilft mir nicht weiter... ich möchte ja nur einen bestimmten Text ( z.b. der aus einer Variablen ) empfangen und nich den ganzen Port abhören...


weis noch jemand was?


LG silentforce
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 9
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Silentforce

Ich habe das Auslesen eines Analog pins meines Arduino mit Hilfe von Visual Basic 2008 so gelöst

Code auf dem Arduino duemilanove

//Analog Pin 0 wird ausgelesen, habe am Pin simpel Werte mit Hilfe eines Potis erzeugt
 int Analogwert=0;

          void setup()
       {
         Serial.begin(9600);
       }

       void loop()
       {

         Analogwert=analogRead(0);
         Serial.println(Analogwert);
         delay(1000);
       }

Code VB 2008 --> dürfte aber in 2010 nicht anders sein

du brauchst die Methode DataReceived

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        Dim AnalogWert As String
        
        Try
                Control.CheckForIllegalCrossThreadCalls = False

                AnalogWert = SerialPort1.ReadLine
                        
                              'Eintrag in die ListBox an oberster Stelle
                    lst_AnalogLesen.Items.Insert(0,AnalogWert)                      
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

Damit liest der Port die Daten aus und gibt sie direkt in der Listbox aus

Hoffe ich konnte dir weiterhelfen?

Gruß




« Last Edit: December 31, 2010, 08:45:47 am by Timmy » Logged

Pages: [1]   Go Up
Jump to: