Show Posts
Pages: [1]
1  International / Français / Re: Com Série - Envoi d'un seul caractère? on: April 10, 2013, 03:31:35 am
Mais bien sur. Quel Âne ...

Je te remercie Skywodd pour ta réponse rapide.
2  International / Français / Com Série - Envoi d'un seul caractère? on: April 10, 2013, 03:12:10 am
Bonjour, j'ai poster il y a un petit bout de temps, un topic sur la communication série de mon projet.
Projet : Un genre de question pour un champion. Application en C++.Net sous Visual Studio 2008.
La Carte Arduino me permet de recevoir les changements de signaux des boutons et l'envoyer sur le port série.
J'ai réussi à la faire.
Mais j'ai un nouveau problème qui se pose à moi.

Lorsque j'envoie un caractère sur le Port Série, j'aimerais que la Carte Arduino en envoie que Un, et pas plusieurs à la suite...
J'utilise Serial.begin(115200); Pour la vitesse.
et Serial.print("a")  => Le caractère signifie que le poste Utilisateur à donner la bonne réponse.
"a" pour poste utilisateur 1.

Y a t'il une fonction, ou une condition pour n'envoyer qu'un seul caractère? ...

Merci par avance.
3  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 11, 2013, 03:48:26 am
Et voila du côté PC ce que j'ai atcuellement, pour ouvrir le port Série, et essayer de lire mon caractère ... Avez vous une idée de mon problème? ...

Code:
Form1(void)
{
InitializeComponent();

HANDLE hSerial;
hSerial = CreateFile(TEXT("COM3"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if( hSerial == INVALID_HANDLE_VALUE ){
printf("Erreur d'initialisation");
}
else{
DCB dcb = {0};

dcb.DCBlength = sizeof(dcb);

if( !GetCommState(hSerial, &dcb)){
printf("Erreur de paramêtrage");

FillMemory(&dcb, sizeof(dcb), 0);
dcb.BaudRate = CBR_115200;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
dcb.Parity = NOPARITY;

if( !SetCommState(hSerial, &dcb)){
printf("Erreur de Port");
}

COMMTIMEOUTS timeouts = {0};

timeouts.ReadIntervalTimeout = 0;
timeouts.ReadTotalTimeoutConstant = 0;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.WriteTotalTimeoutConstant = 0;
timeouts.WriteTotalTimeoutMultiplier = 0;

if( !SetCommTimeouts(hSerial, &timeouts)){
printf("Erreur paramètrage timeouts");
}

char szBuff[5] = "";
DWORD dwBytesRead = 0;
int i = 0;
char test[] = "B\n";
int maxSamples = 10;
DWORD dwCommStatus;

ReadFile(hSerial, LPVOID(szBuff), 4, &dwBytesRead, nullptr);
if(szBuff == "a"){

}

}
CloseHandle(hSerial);
}


}

Et enfaite j'arrive pas à lire mon caractère "a" envoyé depuis l'Arduino ...
4  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 11, 2013, 03:44:59 am
Bonjour Micol, Merci pour ta réponse. Mais mon problème actuel, est que je n'arrive pas à traiter le caractère du côté Pc.

Car j'arrive bien à l'envoyer depuis l'Arduino, en ayant quand même un problème, c'est que sa m'envoie des caractère à la chaine, alors que j'aimerais simplement en envoyé un.

Voila ce que j'ai fais du coté arduino :

Code:
// Poste BOUTON/LED Utilisateur 1

const int BP1 = 2;

const int LED1 = 8;



// Poste BOUTON/LED Utilisateur 2

const int BP2 = 3;

const int LED2 = 9;


// Poste BOUTON/LED Utilisateur 3

const int BP3 = 4;

const int LED3 = 10;


// Poste BOUTON/LED Utilisateur 4

const int BP4 = 5;

const int LED4 = 11;


// Poste ANIMATEUR (Bouton 1 et 2)

const int BP5 = 6;  //Validation

const int BP6 = 7;  // RAZ

//

Etat des contacts lors de l'appuie puis l'etat précédent avant le nouvelle appuie

int etatBP1 = 0;

int MemBP1 = 0;


int etatBP2 = 0;

int MemBP2 = 0;


int etatBP3 = 0;

int MemBP3 = 0;


int etatBP4 = 0;

int MemBP4 = 0;


int etatBP5 = 0;

int MemBP5 = 0;


int etatBP6 = 0;

int MemBP6 = 0;


int MIPC = 0;




void setup() {

Serial.begin(115200);


// Déclaration de l'état des contacts
 
pinMode(LED1, OUTPUT);
 
pinMode(BP1, INPUT);
 
 
pinMode(LED2, OUTPUT);
 
pinMode(BP2, INPUT);
 
 
pinMode(LED3, OUTPUT);
 
pinMode(BP3, INPUT);
 
 
pinMode(LED4, OUTPUT);
 
pinMode(BP4, INPUT);
 
 
pinMode(BP5, INPUT);
 
pinMode(BP6, INPUT);

}



void CondInitial()
{
//Initialisation des variables
 
etatBP1 = 0;
 
etatBP2 = 0;
 
etatBP3 = 0;
 
etatBP4 = 0;
 
etatBP5 = 0;
 
etatBP6 = 0;
 
digitalWrite(LED1, LOW);
 
digitalWrite(LED2, LOW); 

digitalWrite(LED3, LOW);
 
digitalWrite(LED4, LOW);
 
MemBP1 = 0;
 
MemBP2 = 0;
 
MemBP3 = 0;
 
MemBP4 = 0;
 

}



void loop(){
 
   
CondInitial();  //Appel de la fonction d'initialisation 
   
   
etatBP1 = digitalRead(BP1);  //Recuperer le changement d'état du bouton.
   
etatBP2 = digitalRead(BP2);
   
etatBP3 = digitalRead(BP3);   
   
etatBP4 = digitalRead(BP4);
   
etatBP5 = digitalRead(BP5);
   
etatBP6 = digitalRead(BP6);


if(etatBP1 == HIGH && MemBP1 == 0 && MIPC == 0){     
//Traitement du signal lorsque qu'on sur BP1
     
MemBP1 = 1;  //Mise à 1 de sa mémoire et on force les autres mémoire à 0;
     
MemBP2 = 0;
     
MemBP3 = 0;
     
MemBP4 = 0;
   
MIPC = 1;
     
digitalWrite(LED1, HIGH);//On allume la LED
           
     

if(etatBP5 == HIGH && MemBP1 == 1 && MIPC == 1){    //Traitement du signal si réponse juste. Valider
       
digitalWrite(LED1, LOW);
       
MemBP1 = 0;
       
MIPC = 0;
       
Serial.print("a");        //Envoie d'un caractère pour incrémentation du Barre-Graph => PC
       
delay(2000);              //Delai d'attente avant de reprendre pour voir s'il prend bien en compte le caractère
     
}       
else if(etatBP6 == HIGH && MemBP1 == 1 && MIPC == 1){  //Traitement du signal si réponse fausse. RAZ
       
digitalWrite(LED1, LOW);
       
MIPC = 0;
        MemBP1 = 1;
     
}
   
}
 
else if(etatBP2 == HIGH && MemBP2 == 0 && MIPC == 0){
     
MemBP1 = 0;
     
MemBP2 = 1;
     
MemBP3 = 0;
     
MemBP4 = 0;
     
MIPC = 1;
     
digitalWrite(LED2, HIGH);
 
   

        if(etatBP5 == HIGH && MemBP2 == 1 && MIPC == 1){
        digitalWrite(LED2, LOW);
       
MemBP2 = 0;
       
MIPC = 0;   
       
Serial.print("b");
       
delay(2000);
     
}
else if(etatBP6 == HIGH && MemBP2 == 1 && MIPC == 1){
       
digitalWrite(LED2, LOW);
       
MIPC = 0;
       
MemBP2 = 1;
     
}
   
}
   

else if(etatBP3 == HIGH && MemBP3 == 0 && MIPC == 0){
     
MemBP1 = 0;
     
MemBP2 = 0;
     
MemBP3 = 1;
     
MemBP4 = 0;
     
MIPC = 1;
     
digitalWrite(LED3, HIGH);
 

if(etatBP5 == HIGH && MemBP3 == 1 && MIPC == 1){

        digitalWrite(LED3, HIGH);
       
MemBP3 = 0;
       
MIPC = 0;   
       
Serial.print("c");
       
delay(2000);
     
}
     
else if(etatBP6 == HIGH && MemBP3 == 1 && MIPC == 1){
       
digitalWrite(LED3, HIGH);
       
MIPC = 0;
       
MemBP3 = 1;
     
}
   
}
   
else if(etatBP4 == HIGH && MemBP4 == 0 && MIPC == 0){
     
MemBP1 = 0;
     
MemBP2 = 0;
     
MemBP3 = 0;
     
MemBP4 = 1;
     
MIPC = 1;
     
digitalWrite(LED4, HIGH);
     


if(etatBP5 == HIGH && MemBP4 == 1 && MIPC == 1){
       
digitalWrite(LED4, LOW);
       
MemBP4 =0;
       
MIPC = 0;
       
Serial.print("d");
       
delay(2000);
     
}

else if(etatBP6 == HIGH && MemBP4 == 1 && MIPC == 1){
       
digitalWrite(LED4, LOW);
        MIPC = 0;
        MemBP4 = 1;
     
}
   
}

 
}
   


5  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 08, 2013, 08:39:49 am
Merci d'avoir répondu patg_, mais je ne sais pas si le sketch firmata standart m'aidera.

Car pour ce qu'il est du Sketch Arduino, je les déjà fais.
En pièce jointe post précédent.

Mon soucis est que je n'arrive pas à récupérer le caractère coté PC envoyé par l'Arduino.
Et l'Arduino envoie en permanence des caractère alors que j'ai besoin qu'il envoie un seul caractère.

6  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 07, 2013, 02:53:53 am
Voici ce que j'ai fais du coté Arduino pour le moment.
Normalement le traitement est bon.

Mais coté Pc, je ne vois pas trop comment se Servir, ou du moins comment développer la Comm Série avec DataReceiver et ReadChar pour lire le caractère envoyé par l'Arduino.
Faut-il que je fasse une interface comme B@tto à fais dans son Projet Publier dans un Post précedent.

Merci pour votre aide.
7  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 04, 2013, 03:17:01 am
Je suis d'accord sur ta Logique B@tto, mais pour quelqu'un qui débute, l'appliquer sous forme d'un Code Foncionnel ce n'est pas facile, surtout quand tu as du mal avec l'environnement de développement.

En plus l'IDE Arduino ne fonctionne plus ... Certaine la cause du à Java 7u15.

Je vois très bien ce qu'il faut faire, mais je n'arrive pas à l'exprimer sous forme de Code, avez vous une piste? ...

8  International / Français / Re: Plantage au lancement de l'IDE on: March 01, 2013, 09:49:16 am
J'ai le même problème depuis que j'ai installer Java RE 7u15.

C'est "MAGIQUE"
9  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: March 01, 2013, 02:34:51 am
Oui effectivement, la traduction du signal envoyé par le Bouton en caractère [côté Arduino], et ensuite traiter le caractère côté Projet Visual et renvoyé un caractère de réponse à la carte qui elle traitera à nouveau le signal pour allumer la LED ou non.

Il faut que j'utilise la librairie SerialDumper, en réutilisant l'exemple "CmdMessengerExample.pde"?
10  International / Français / Re: Communication Série Arduino - Visual Studio "PROJET" on: February 26, 2013, 03:45:17 am
Bonjour,

Avec la librairie .Net.
J'ai regarder plusieurs Tuto, exemples sur le net mais à chaque fois c'est pour de la saisie de caractère, alors que moi c'est avec une impulsion sur un bouton poussoir.
11  International / Français / Communication Série Arduino - Visual Studio "PROJET" on: February 25, 2013, 02:26:31 am
Bonjour, je vous solicite car je débute dans la programmation, language C++ et j'aurais aimé avoir un petit peu d'aide de votre part pour mener à bien mon projet de fin d'année.

Je dois concevoir un genre de Question Pour Un Champion, ce qui signifie récupérer plusieurs signaux venant des LEDS et des Boutons.
Je ne sais pas comment m'y prendre pour effectuer une communication série entre ma carte Arduino Uno et un programme C++ sous Visual Studio pour ensuite récupérer les changements d'états.

Avez vous une petite idée?

Je vous remercie.
Pages: [1]