Arduino Diecimila + Visual Studio 2010

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 :slight_smile:

Danke im Voraus

Gruß SilentForce

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

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

@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ß