IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Auto connexion Arduino


Sujet :

Visual Studio

  1. #1
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Auto connexion Arduino
    Bonjour tous le monde

    Je souhaite trouver une solution pour connecter windows avec l'arduino mais je n'y arrive pas.

    J'ai essayé de créer un programme VS studio avec une connexion automatique comme expliqué ICI sans succès
    Le Programme VS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Imports System.IO.Ports
     
     
    Public Class Form1
     
        Dim ArduinoConnected As Boolean
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            TimerConnect.Enabled = False
            ArduinoConnected = False
            Autoconnect()
        End Sub
     
        Private Sub BtnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
            If ArduinoConnected Then
                SerialPort1.Close()
                btnConnect.Text = "Connect"
            Else
                Autoconnect()
            End If
        End Sub
     
        Private Sub Autoconnect()
            For Each sp As String In My.Computer.Ports.SerialPortNames
                Try
                    SerialPort1.PortName = sp
                    SerialPort1.BaudRate = 9600
                    SerialPort1.DataBits = 8
                    SerialPort1.Parity = Parity.None
                    SerialPort1.StopBits = StopBits.One
                    SerialPort1.Handshake = Handshake.None
                    SerialPort1.Encoding = System.Text.Encoding.Default
                    SerialPort1.Open()
                    SerialPort1.Write("3/")
                    TimerConnect.Interval = 500
                    TimerConnect.Start()
                    While TimerConnect.Enabled And ArduinoConnected = False
                        Application.DoEvents()
                    End While
                    If ArduinoConnected Then
                        btnConnect.Text = "Disconnect"
                        Exit For
                    End If
                    SerialPort1.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            Next
            If ArduinoConnected = False Then
                MsgBox("Arduino failed to connect. Please check that it is plugged in.")
            End If
        End Sub
     
     
        Public Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
            Dim str As String = SerialPort1.ReadExisting()
            If str.Contains("Arduino") Then
                ArduinoConnected = True
                lstConsole.Items.Add("Arduino Connected")
     
            End If
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Shell("shutdown -s -t 100")
     
        End Sub
     
    End Class
    Programme Arduino
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void setup()
    {
    Serial.begin(9600);
    }
     
    void loop()
    {
     
    if (Serial.read() == "3/")
     
    {
    Serial.print("Arduino");
    }
     
    }
    Le "Shell("shutdown -s -t 100")" pour le test avec un buton (fonctionnel).

    Si l'arduino n'est pas connecté il m'affiche bien l'erreur ""Arduino failed to connect..." mais si l'arduino est connecté le programme reste figé et sans erreur sans affiche le Form.
    Avez-vous des idées ?


    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    https://www.arduino.cc/en/Serial/Read
    serial.read a l'air de lire un byte, pas un string ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    J'ai pas pensé à le stipulé mais j'ai essayé avec seulement un "1" sa n'a pas marché non plus .
    Je vois que l'arduino reçois bien quelque chose mais le logiciel VS "se perd"? Et n'affiche pas la "Fort1"

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    l'éditeur de code arduino (et peut etre le plugin pour vs) permet d'afficher les échanges RS232 donc ca te permettra de voir ce qui se passe

    après si tu envoies "1" ca reste un string, et .net transforme ca en ascii, donc ca ne sera pas 1 de l'autre côté
    et de l'autre côté il ne faut pas tester un string non plus
    (tu ne nous as pas remis le code que tu as testé)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci, d'accord je vais changer ça puis essayer. En fait si c'est bien la version que j'ai essayé (plusieurs d'ailleurs),
    mais comme il n'y avait aucun changement je suis retourné en arrière.

  6. #6
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    A partir des cours Arduino https://arduino.developpez.com/cours/ j'ai modifié le code arduino pour ressembler à un de mes code précédent et qui est fonctionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    void setup()
    {
      Serial.begin(9600);
    }
     
    void loop() {
      while (Serial.available() > 0) {
        int inByte = Serial.read(); // lire un premier caractère
     
        // filtrer : il doit etre une lettre majuscule
        if (inByte >= 'A') {
          int valeur = Serial.parseInt();
          Serial.read();
     
          // traitement
          switch (inByte) {
            case 'C'://Données commencant par "R" = RPM
              if (valeur == 1) {
                Serial.print("Arduino");
              }
              break;
          }
        }
      }
    }// End Loop
    Cette fois je suis sur du bon fonctionnement, testé au Serial moniteur et quand je simule avec VS l'arduino clignote sur la led Rx puis Tx mais le VS reste sans afficher le Windows Form1 :/

    Bien-sur, j'ai changé le "3/" en "C1" sur VS

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu as mis un point d'arret sur l'event datareceived ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Non , comment je dois procédé ?

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Tu googles visual studio point d'arret

    Dans le principe parfois (surtout quand on débutes) on pense que le code qu'on a écrit fait tel truc alors qu'il fait autre chose. Le mieux reste de verifier ce qu'il se passe, les points d'arrêt sont une des choses qui permettent de vérifier.
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci, je n'ai pas créer ce programme c'est de la récup via le tuto ciblé plus haut, mais non fonctionnel.

    J'ai réussi à trouver autre chose qui me permet d'afficher ce que l’Arduino envoie, je sais pas encore si je pourrais travailler avec des données différentes mais pour éteindre Windows c'est suffisant.

    Qu'en pensez-vous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Imports System.IO.Ports
     
     
    Public Class Form1
     
        Dim ArduinoConnected As Boolean
        Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data'
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            TimerConnect.Enabled = False
            ArduinoConnected = False
            Autoconnect()
        End Sub
     
        Private Sub Autoconnect()
            For Each sp As String In My.Computer.Ports.SerialPortNames
                Try
                    SerialPort1 = New SerialPort(sp, 9600, Parity.None, 8, StopBits.One)
                    SerialPort1.ReadTimeout = 700
                    SerialPort1.WriteTimeout = 700
                    SerialPort1.Open()
                    SerialPort1.Write("C1")
                    ArduinoConnected = True
                    btnConnect.Text = "Disconnect"
                Catch ex As TimeoutException
                End Try
            Next
     
        End Sub
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Shell("shutdown -s -t 100")
     
        End Sub
     
        Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            ReceivedText(SerialPort1.ReadExisting())
        End Sub
     
        Private Sub ReceivedText(ByVal [text] As String) 'input from ReadExisting'
            If Me.RichTextBox2.InvokeRequired Then
                Dim x As New SetTextCallback(AddressOf ReceivedText)
                Me.Invoke(x, New Object() {(text)})
     
            Else
                Me.RichTextBox2.Text &= [text] 'append text'
            End If
        End Sub
     
        Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
            If btnConnect.Text = "Disconnect" Then
                SerialPort1.Close()
                ArduinoConnected = False
                btnConnect.Text = "Connect"
            End If
     
        End Sub
    End Class

Discussions similaires

  1. Connexion Arduino & Raspberry en USB avec Serial
    Par Alexis55000 dans le forum Raspberry Pi
    Réponses: 20
    Dernier message: 22/12/2016, 23h00
  2. Auto-connexion - Solutions
    Par Akryos-K dans le forum Général Java
    Réponses: 9
    Dernier message: 22/05/2011, 10h01
  3. Auto connexion sans stockage mot de passe
    Par K20 dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/10/2008, 21h01
  4. [Mail] Gestion lien d'auto-connexion
    Par Fonzy17 dans le forum Langage
    Réponses: 1
    Dernier message: 06/06/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo