Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - visual studio e arduino
Forum - C# / VB.NET - visual studio e arduino

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
LUKGI (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/04/2017

Segnala al moderatore
Postato alle 19:14
Mercoledì, 26/04/2017
salve a tutti . sono da poco iscritto a questo sito ( molto consigliato perche' molto professionale ) e non avendo molta esperienza , ma molto entusiasmo ,chiedevo un aiuto per un progettino che sto' portando avanti . Praticamente quello che sto cercando di realizzare e' questo : collegare arduino con visual studio - premere un pulsante o attivare un sensore su arduino il quale comunica un codice a visual studio che a sua volta compie della azioni su visual studio e di conseguenza attiva i vari rele' di arduino ( spero di essermi spiegato bene ). Diciamo che sono a meta' strada nel senso che riesco a comunicare da arduino a visual , da visual a arduino ( manualmente con pressione di un button ) ma non riesco a creare l'automatismo senza la pressione del button .

in particolare    premendo un pulsante su arduino ( pin 12 ) lo porta HIGH , arduino poi comunica a visual studio la variazione di stato ( da low a high ) tramite la porta seriale ( in questo caso comm3 ) . Su visual studio nella text box creata il testo si modifica (  da “spento “a “ acceso “ in base al pulsante premuto su arduino ) Quello che non  funziona e' il comando  successivo su visual studio :

If ciccio = "acceso" Then
            TextBox1.BackColor = Color.Red

cioe' sul text box la variazione della scritta spento e acceso funziona in base alla pressione del pulsante , ma non funziona il successivo comando che e' questo : se nella text box c'e' la parola “acceso “ allora  (THEN ) IL COLORE DELLA TEXT BOX E' ROSSO . Spero di essere stato chiaro.
Grazie a chi vuole aiutarmi


ecco i codici che ho usato

ARDUINO


w=digitalRead(12);
if (w==HIGH)
{
  Serial.println("acceso");
   delay (100);
  
}
else
{ Serial.println("spento");

  delay (100);

}
}

VISUAL STUDIO

  Dim ciccio As String

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

        SerialPort1.Close()
        SerialPort1.PortName = "com3"
        SerialPort1.Open()


    Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        ciccio = SerialPort1.ReadLine

    End Sub

    Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        TextBox1.Text = ciccio
        If ciccio = "acceso" Then
            TextBox1.BackColor = Color.Red

        End If
    End Sub

p.s. chiedo scusa se alcuni termini che uso non sono da addetti ai lavori.:pat:


PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 8:28
Giovedì, 27/04/2017
Ciao, visual studio è un ambiente di sviluppo, un IDE con cui è possibile sviluppare in diversi linguaggi di programmazione.
E' sbagliato dire che vuoi comunicare da arduino a visual studio, dovresti dire che vuoi comunicare da arduino ad un applicazione
in visual basic.net VB.net.

Secondo me il problema potrebbe essere  che "acceso" non è  "acceso", mi spiego tu in arduino utilizzi Serial.println("acceso"), quindi invii la stringa  "acceso" più il carattere nuova riga "acceso\n", per cui il confronto nell'if vb.net  non risulta vero perché le due stringhe non sono uguali.

POTRESTI provare a usare in arduino Serial.print("acceso") al posto di Serial.println("acceso"), in questo modo ti invia i caratteri senza newline.

PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 8:29
Giovedì, 27/04/2017
Ho letto ora che serialprot1.readline() toglie il carattere newline dalla stringa ricevuta, quindi il problema non è quello :d

Ultima modifica effettuata da torn24 il 27/04/2017 alle 8:46
PM Quote
Avatar
LUKGI (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/04/2017

Segnala al moderatore
Postato alle 16:18
Giovedì, 27/04/2017
Ciao, innanzi tutto grazie per le tue delucidazioni e correzioni per quanto riguarda l'uso della terminologia ( portate pazienza ma sto' imparando ) . per quanto riguarda l'osservazione su provare a togliere /ln sulla seriale inviata avevo gia' provato a farlo come ho provato a mettere un numero es. "1" al posto di " acceso " pensando che le stringhe inviate da arduino a vb.net fossero leggibili solo se contengono numeri ma niente da fare lo stesso . Sembra quasi che la stringa che appare sulla textBox di vb.net che si modifica da " spento " a " acceso " in base alla pressione del pulsante non sia considerata un testo per cui vb.net non la vede , ho provato anche a variare i delay ( arduino ) e il timer (vb.net ) ma niente da fare . Forse c'e' qualche assegnazione particolare da fare alla proprieta' della  text box . Oppure qualche comando da digitare in vb.net che non conosco...


PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 23:28
Giovedì, 27/04/2017
Testo quotato

Postato originariamente da LUKGI:

Ciao, innanzi tutto grazie per le tue delucidazioni e correzioni per quanto riguarda l'uso della terminologia ( portate pazienza ma sto' imparando ) . per quanto riguarda l'osservazione su provare a togliere /ln sulla seriale inviata avevo gia' provato a farlo come ho provato a mettere un numero es. "1" al posto di " acceso " pensando che le stringhe inviate da arduino a vb.net fossero leggibili solo se contengono numeri ma niente da fare lo stesso . Sembra quasi che la stringa che appare sulla textBox di vb.net che si modifica da " spento " a " acceso " in base alla pressione del pulsante non sia considerata un testo per cui vb.net non la vede , ho provato anche a variare i delay ( arduino ) e il timer (vb.net ) ma niente da fare . Forse c'e' qualche assegnazione particolare da fare alla proprieta' della  text box . Oppure qualche comando da digitare in vb.net che non conosco...




prima devi attivate il Timer4 con Timer4.Start() nella procedura Load


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
LUKGI (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/04/2017

Segnala al moderatore
Postato alle 10:57
Venerdì, 28/04/2017
ciao . ho provato come dici tu mettendo nel load lo start del timer 4 . ma non mi va' . Ho anche provato a mettere in false l'enable del timer 4 ( nelle sue proprieta' ) visto che nel load, il timer ,  ha lo start. Ma niente da fare..

PM Quote
Avatar
Snogar (Normal User)
Pro


Messaggi: 145
Iscritto: 09/01/2012

Segnala al moderatore
Postato alle 16:11
Venerdì, 28/04/2017
Leggo dal codice che il tuo timer si chiama Timer1  ....forse è per questo che non va?

PM Quote
Avatar
LUKGI (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/04/2017

Segnala al moderatore
Postato alle 19:28
Venerdì, 28/04/2017
Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
        TextBox1.Text = ciccio
        If ciccio = "acceso" Then
            TextBox1.BackColor = Color.Red

ciao corretto il codice come da te indicato giustamente . Ma niente non  funziona lo stesso .

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 21:24
Venerdì, 28/04/2017
Testo quotato

Postato originariamente da LUKGI:

  Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
        TextBox1.Text = ciccio
        If ciccio = "acceso" Then
            TextBox1.BackColor = Color.Red

ciao corretto il codice come da te indicato giustamente . Ma niente non  funziona lo stesso .  




Il Timer deve essere su Enabled = True

nel Load metti Timer4.Enabled=True poi Timer4.Start()

nelle proprietà del Timer4 devi settare il tempo del Tick

fai il debug e controlla la stringa ciccio se corrisponde


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo