Poll
Question: A
A - 2 (66.7%)
B - 1 (33.3%)
Total Voters: 3

Pages: 1 [2] 3 4 ... 6   Go Down
Author Topic: Arduino et visual studio  (Read 8436 times)
0 Members and 1 Guest are viewing this topic.
France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok pas facile au début tout ça. J'ai corrigé les erreurs suivantes mais sur celle la je sèche :

"error: 'lampe_eclaire' was not declared in this scope"

C'est rien pour toi smiley-wink
Ralala ct'espéce de voyou, Super_Cinci t'as donnait un morceau de code en vrac smiley-mr-green
Des B majuscules sur les break, des W majuscule sur les while, ralala! smiley-mr-green

Code:
byte data, d0, d1, d2;

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

void loop(){
  if (Serial.available()) {  // scruter en continu l'arrivée de commandes via le port série et les traiter.
    data = Serial.read();  // réception d'une commande :
    switch (data){
      case 0x55 :          // code 0x55 = "Bonjour, tu vas bien?"
        Serial.write(0xAA);     // Réponse 0xAA = "Bonjour aussi! Oui, je vais bien!"
        break;
      case 0x24 :          // code 0x24 = commande éclairage
        while(!Serial.available());   // attente des données suivantes
        d0 = Serial.read();  // d0 contient le  numéro de la lampe sur laquelle on doit agir
        while(!Serial.available());   // attente des données suivantes
        d1 = Serial.read();  // d1 contient la valeur d'éclairage (pour PWM par exemple)
        //lampe_eclaire(d0, d1);      // appel d'une procédure qui allume la lampe demandée à la valeur demandée
        Serial.write(0xAA);     // Réponse 0xAA = "Bien reçu, commande traitée"
        break;
      //(...)   // la suite du traitement des commandes... 
    }
  }
}
(ça compile mais je sait pas si ça marche smiley-wink faut demander à Super_Cinci)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ralala ct'espéce de voyou, Super_Cinci t'as donnait un morceau de code en vrac
Des B majuscules sur les break, des W majuscule sur les while, ralala!

Ce doit être mon bisutage ^^
Effectivement cela compile, merci. Maintenant c'est la partie VB qui me pose problème  smiley-confuse.
Mes derniers développements en VB étaient sous VB3 et win 3.1  smiley
« Last Edit: January 18, 2012, 03:18:04 pm by Michel_B » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ce doit être mon bisutage ^^
Effectivement cela compile, merci. Maintenant c'est la partie VB qui me pose problème  smiley-confuse.
Mes derniers développements en VB étaient sous VB3 et win 3.1  smiley
Pour VB moi je suis sous VS 2010, donc les sources en basic pro 6 compile pas une fois sur deux smiley-yell
En plus VB6 c'était du code natif au final le .exe, maintenant c'est du MSIL (même principe que java et la JVM).
Tout ça pour dire que je peut aider pour la partie C# ou VB mais que si c'est du .net sous VS 2010 smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
J'ai trouvé un tuto pas mal : http://webhole.net/2010/05/01/arduino-visual-c-plus-plus-tutorial/
Tu devrais essayer ça, j'ai réussi à le faire fonctionner en 5 minutes... Avec Visual Studio en C++.

Effectivement Arduimat, cela fonctionne. Reste à le modifier et commander la sortie en cliquant sur un bouton ON et un OFF, après je serais comblé...(de travail smiley-wink )

Sinon j'ai essayé ce code en vb mais cela ne marche pas chez moi : http://www.instructables.com/id/Using-Visual-Basic-to-control-Arduino-Uno/
 
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
J'ai parcouru ce post car je programme pas mal en VB.net
Je suis sur Visual Basic 2010 express (cette version est gratuite).http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express

Je me suis amusé a commander une sortie a partir de VB en passant par la communication série.
(un programme tout léger a la va vite mais fonctionnel, c'était surtout pour tester)
Cela fonctionne parfaitement et si on sait commander une sortie, on peux faire le reste sans soucis !

J'ai été grandement aidé par un fichier pdf très bien expliqué dont je ne sais plus la provenance et qui explique comment utiliser la classe "Ports" de VB.net

Je me suis permis de vous linker une archive contenant toutes mes sources, l’exécutable et le prog pour l'Arduino afin de tester.
Je ne sais pas si cela vous intéressera mais on sait jamais...

Pour l’exécutable, si vous n'avez pas visual studio, il faut avoir au préalable installé le Framework 4 ou supérieur :http://www.microsoft.com/downloads/fr-fr/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992

Voici le lien de l'archive : http://perso.numericable.fr/tchonordiste/Arduino/VBetArduino.zip
Pour l’exécutable, c'est dans le répertoire "VB_executable" il faut lancer : "NieuwSerialArdiuino.exe"
Le programme de l'arduino est dans "Partie Arduino" (c'est juste une adaptation de l'exemple de communication donné avec l'EDI) car si je me débrouille bien en VB, je suis débutant en Arduino  smiley-roll

L'autre répertoire contient toutes les sources
J'ai mis également le fichier PDF

En espérant pouvoir vous donner des idées.
A bientôt
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je me suis permis de vous linker une archive contenant toutes mes sources, l’exécutable et le prog pour l'Arduino afin de tester.
Je ne sais pas si cela vous intéressera mais on sait jamais...

Oh que oui ! Merci Fredo59
J'ai testé, cela fonctionne parfaitement, je vais pouvoir décortiquer tout ça pour mieux comprendre. Ce week end je ne vais pas m'ennuyer smiley-wink

++
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1392
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut tout le monde!

Oui, je n'ai fourni qu'une idée d'exemple, forcément ça ne peut pas marcher, c'était pour montrer comment ça s'organise dans mes projets (ils sont tous faits suivant cette structure).

J'utilise VB6 parce que je l'ai et que je commence à maîtriser, même si développer deux applis en même temps, l'une en basic, l'autre en C, c'est une gymnastique de malade pour mes neurones. Je devrais peut-être passer à VC...

Si tu as trouvé une autre solution, et que ça marche, alors n'hésites pas!

Bon courage en tout cas!
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous,
Content d'avoir pu t'aider Michel_B.

Mais bien sûr cela reste un exemple car la gestion de la trame serial provenant de VB avec un if-then dans l'arduino est très lourde pour celui-ci.

A plus grande échelle (+ de sortie), il serait judicieux d’intégrer dans la trame directement le numéro de sortie ainsi que l'état dans lequel on veut qu'il soit et ensuite l'analyser dans l'arduino (très rapide) et actionner les sorties correspondantes (très rapide également).

Dans mon exemple j'envoie ON. ou OFF. a l'arduino (le point signifiant la fin de la transmission,caractère prit arbitrairement)
Part la suite cela deviendrai : 1,ON. ou 5,OFF. et l'arduino saurait directement sans devoir boucler avec des if-then les sorties a modifier.

Si tu as des soucis en VB pour le faire, je peux toujours t'envoyer un exemple.
Bon amusement
++
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Si tu as des soucis en VB pour le faire, je peux toujours t'envoyer un exemple.

Oui je veux bien, j'ai fait des essais ce week end mais cela n'est pas vraiment au point.

Merci
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas de soucis, je me mets dessus  ce soir et je te ponds un truc...
Mais avant je voudrais savoir si tu as su ouvrir les sources en VB, comme ça je suis sur qu'on parle de la même chose quand tu modifieras tes prog.
Parce que j'ai déjà eu des problèmes pour ouvrir un projet sur 2 PC différents avec un même VB express installé.

Je vais te faire un exemple ou tu pourras actionner 5 sorties différentes (ça te montrera ainsi la boucle a écrire pour + de fluidité dans l'Arduino)
Certainement que Skywodd viendra encore améliorer le bazard par la suite, car si la partie VB ne me pose aucun soucis, la partie Arduino me pose certain soucis de simplification du a ma méconnaissance du langage Arduino.

J'essaie donc de faire au plus vite  smiley-wink
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon ben voilà c'est fait.

Je te mets le lien de la nouvelle archive, j'ai gardé la même structure c'est plus facile.
Cette fois je fait 1 seule boucle de ctrl dans l'arduino pour les 5 sorties et je me sert de la propriété TAG des boutons dans VB (c'est une manière de faire parmis plein d'autres).

J'attire ton attention sur le fait qu'il y a 1milliard d'autres possibilités pour arriver a la même chose...Selon le degré d'expérience du programmeur (je ne veux pas que tu crois que c'est la seule manière de faire, certain bon programmeur pourraient te pondre des trucs de ouf qui fonctionne a merveille.)

Mon programme est un peu simpliste, mais si on continue dans ce sens, il sera de + en + "sérieux" au fur et a mesure que nous trouvons des solutions pour simplifier le fonctionnement.
Comme d' habitude j'en ai chié avec les diverses conversions de types de données dans l'Arduino mais au final cela fonctionne n'est-ce pas l'essentiel ?

http://perso.numericable.fr/tchonordiste/Arduino/VBetArduinoV2.zip

J'espère que c'est ce que tu attendais sinon décris encore plus précisement ce que tu veux  smiley-wink

Pour le test sur l'Arduino, il faut mettre tes LED sur les sorties 2,3,4,5 et 6 (pas oublier les résistances hein  smiley-eek-blue)

A bientôt
++
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Mais avant je voudrais savoir si tu as su ouvrir les sources en VB, comme ça je suis sur qu'on parle de la même chose quand tu modifieras tes prog.

Oui tes sources sont ok, je m'en suis d'ailleurs inspiré ce week end.
J'ai fais des essais avec mais je ne suis pas arrivé à faire comme je voulais.
J'ai créé un bouton on et un off par sortie.
Je n'ai pas su garder la mémorisation de l'état de la sortie précédente lors de l'envoi d'une nouvelle commande et j'ai également eu des problèmes dans ma programmation de l'arduino. Je pouvais faire un cycle on/off et après il ne voulais plus rien savoir (et comme si cela ne suffisait pas j'ai également eu un strap défectueux dans mon cablage smiley-sad )

En envoyant un seul caractère sur le port série (j'ai du mal avec une chaine de caractères) et du IF à chaque fois, j'ai réussi à faire quelque chose qui fonctionne, mais je pense qu'il y a beaucoup plus "pro" comme programmation.

Merci pour le temps passé à m'aider.

EDIT : Tu m'as dévancé dans la réponse
« Last Edit: January 23, 2012, 01:05:55 pm by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En parlant de programmation "Plus pro", nous sommes sur la même longueur d'onde  smiley-wink

En fait programmer "Plus pro" se résume a effectuer la même tache en effectuant le moins d'opérations possibles (soit un programme le plus petit possible)
Mais bien souvent très illisible pour le néophyte car il faut connaitre beaucoup plus de commande dans ce cas. smiley-eek-blue

C'est pour cela que je t'expliquais qu'on commencerai simpliste et quand tu aurais tout assimilé, on peaufinerai pour arriver a quelque chose de plus sérieux.
(du côté VB du moins car pour la partie Arduino, je ne connais pas assez de fonctions pour pouvoir améliorer le prog).

Si le programme VB te chagrines, on peux le décortiquer fonction par fonction jusqu’à ce que tout te paraisse clair.

Bon amusement
+++

 
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai étudié ton prog , au niveau arduino c'est clair. Au niveau vb j'aurai besoin d'une ou deux explications mais nous verrons un peu plus tard.
Je souhaite modifier ton projet en rajoutant 2 boutons on/off pour lire alternativement la valeur d'une ou de l'autre entrée.

Je n'ai pas besoin d'un code (il faut bien que je bosse un peu smiley-wink ) mais juste le résonnement sur la manière de procéder.
Arduino va envoyer en permanence les données et je traite du coté VB ? Ou arduino envoie si vb demande ?

Si tu peux me dire comment tu aborderais cette gestion cela m'aidera.

++



Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir Bernard_B

Dans l'analyse du cas que tu me décris, j'élimine d'office l'émission des info en continue car a mon avis , cela ne peux servir que dans un cas genre "Oscilloscope" ou l'on mesure en continue des valeur et où l'on ne demande rien d'autre a l'appareil.

Ensuite reste 2 cas.

1° Cas ou tu ne veux lire qu'une information du type tout ou rien (ON/OFF) : Dans cette configuration, en général l'entrée ne change pas a une vitesse folle et envoyer l'info peut donc être rafraichie a une cadence relativement lente. soit par exemple 1x/sec (c'est arbitraire). Donc maintenant 2 cas s'offrent a nous : soit c'est VB qui interroge, soit c'est Arduino qui envoie sans qu'on lui demande.
 a) VB qui envoie : Tu mets un timer dans VB réglé sur 1sec par ex. qui enverra une commande (definie par toi) analysée dans l'arduino qui répondra en donnant l'état de la sortie.
 b) Arduino qui envoie : Dans une boucle de l'arduino, chaque secondes il envoie l’état de ses sorties (dans VB, l’événement de reception mettra a jour l'info)

2° Cas ou tu lis une entrée analogue : Dans cette configuration, tu serais obligé de prévoir 2 boutons dans VB 1.Démarrer la lecture 2.Stopper la lecture : pour donner l'ordre a l'Arduino d'envoyer le flot de mesures en continu et le stopper quand tu n'en a plus besoin. On se rapproche de l'application Oscilloscope que je citais plus haut.

Il faudra donc analyser correctement le type d'application que tu veux faire.

Si c'est une supervision par exemple (genre Citect Scada), tu devras plutôt t'orienter vers un système complet dans VB qui interroge régulièrement l'Arduino pour mettre a jour l'affichage et qui envoie également des commande quand tu actionnes les sorties.

Peux-tu préciser ce a quoi tu voudrais arriver afin que je t'orientes correctement. smiley-sad
Dans mon boulot je programme des supervisions mais en général je suis relié a des automates (PLC) ce qui pourrait s'apparenter a nos Arduino....
Donc on devrait arriver a faire quelque chose de correct. smiley-eek-blue

Bon courage

++
Logged

L'expérience est une longue suite de bêtises...

Pages: 1 [2] 3 4 ... 6   Go Up
Jump to: