Envoyer Byte port série Visual C++
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Envoyer Byte port série Visual C++



  1. #1
    invitef5d96046

    Envoyer Byte port série Visual C++


    ------

    Bonjour pour la première fois j'essaye de communiquer entre un programme Visual C++ et un micro.

    En fait ce que j'aimerais envoyer c'est une couleur dans le format 255 , 0 , 255 .

    Le problème est que quant je fait par exemple :

    Code:
    serialPort1->WriteLine("" + R);
    serialPort1->WriteLine("" + G);
    serialPort1->WriteLine("" + B);
    lui il va envoyer pour le R par exemple :
    Code:
    '2' , '5' , '5'
    et vu que 255 c'est un unsigned char j'aimerais bien envoyer la valeur directement en une seul fois et non envoyer un 2 après un 5 et après un autre 5.

    J'espère que vous comprenez un peut ce que je raconte

    vous savez comment je peut faire ca ?

    Merci d'avance ++

    -----

  2. #2
    sdec25

    Re : Envoyer Byte port série Visual C++

    Bonjour,
    Tu es sûr que R est unsigned char ?
    Essaie ça :
    • "" + (char)R
    • serialPort->WriteChar (si ça existe)
    • char x[2]; x[0] = R; x[1] = 0;

    Cependant, ça peut poser problème si R=0, 0 étant le caractère de fin de chaîne.

  3. #3
    invite89303051

    Re : Envoyer Byte port série Visual C++

    Bonjour
    Si la fonction WriteLine est prévue pour envoyer des chaines de caractères, cela ne fonctionnera pas. En effet, si tu veux envoyer le byte 0x00 dans ta chaine, ce sera interprété comme le caractère de fin de chaine, et non comme un caractère à envoyer.
    Il faut une fonction permettant d'envoyer directement du binaire.
    A+

  4. #4
    invitef5d96046

    Re : Envoyer Byte port série Visual C++

    Oui oui sur que c'est unsigned char.

    Je ne comprends pas trop ce que tu veut que je fasse.
    mais en tout cas WriteChar() n'existe pas, il y a Write ou WriteLine.

  5. A voir en vidéo sur Futura
  6. #5
    invitef5d96046

    Re : Envoyer Byte port série Visual C++

    @RicounetZap

    Ce que j'aimerais savoir c'est si une fonction comme ca existe sous Visual c++...

  7. #6
    Jack
    Modérateur

    Re : Envoyer Byte port série Visual C++

    Avec Visual C++, tu as la classe SerialPort dans laquelle la méthode write() permet d'envoyer des octets:

    http://msdn.microsoft.com/en-us/library/ms143551.aspx

    Sinon, tu peux utiliser la dll "inpout32.dll"

    A+

  8. #7
    invitef5d96046

    Re : Envoyer Byte port série Visual C++

    Pourrais tu m'expliquer à quoi sert l'offset dans la fonction Write ( array<unsigned char>^ buffer, int offset, int count )

    merci

  9. #8
    invite89303051

    Re : Envoyer Byte port série Visual C++

    Bonjour
    L'offset permet de définir l'index du premier byte à envoyer de ton buffer.
    Si tu as un buffer de 1024 octets et que tu veux envoyer l'octet en position 12, tu écris le code suivant :

    Write(Buffer,12,1); /Envoie de 1 octet en position 12

    A+

  10. #9
    Jack
    Modérateur

    Re : Envoyer Byte port série Visual C++

    Citation Envoyé par RicounetZap Voir le message
    Bonjour
    L'offset permet de définir l'index du premier byte à envoyer de ton buffer.
    Si tu as un buffer de 1024 octets et que tu veux envoyer l'octet en position 12, tu écris le code suivant :

    Write(Buffer,12,1); /Envoie de 1 octet en position 12

    A+
    hi hi je n'avais même pas fait attention qu'on pouvait avoir la traduction du site en Français:
    http://msdn.microsoft.com/fr-fr/library/ms143551.aspx

    Mais RicounetZap a déjà parfaitement répondu.

    A+

  11. #10
    invitef5d96046

    Re : Envoyer Byte port série Visual C++

    J'avais mit la page MSDN en français mais j'avais quand même pas comprit, merci a RicounetZap pour la réponse clair. Mais j'ai toujours un problème (désoler d'insister).

    j'ai jamais comprit ce que c'était un buffer concrètement.
    dans mon code je fait :
    Code:
    cli::array<unsigned char,1>^ couleurs;
    couleurs[0] = 46;
    this->serialPort1->Write(couleurs,0,1);
    J'ai voulu envoyer un seul byte. Le compilateur me dit que tout va bien mais lors ce que je lance le programme il bloque sur : couleurs[0] = 46;

    il me dit:
    Une exception non gérée du type 'System.NullReferenceException ' s'est produite dans LEDS_RGB.exe

    Informations supplémentaires*: La référence d'objet n'est pas définie à une instance d'un objet.
    Merci beaucoup !

  12. #11
    sdec25

    Re : Envoyer Byte port série Visual C++

    Un buffer est un tampon. Plutôt que de travailler octet par octet on stocke temporairement des données dans un tampon en attendant de les envoyer (ou pour les recevoir).

    Ce que tu utilises n'est pas du C++ standard, et puis ce n'est pas parce que tu programmes en C++ que tu ne peux pas utiliser les tableaux classiques :
    Code:
    char tab[1];
    tab[0] = 46;
    Mais avec ton message d'erreur je dirais que "couleurs" n'est pas initialisé.

  13. #12
    invitef5d96046

    Re : Envoyer Byte port série Visual C++

    j'ai essayer avec un tableau classique mais ca me fait une erreur a la compilation:
    1>Form1.h(286) : error C2664: 'void System::IO::Ports::SerialPort: :Write(cli::array<Type,dimensi on> ^,int,int)'*: impossible de convertir le paramètre 1 de 'unsigned char [1]' en 'cli::array<Type,dimension> ^'
    1> with
    1> [
    1> Type=wchar_t,
    1> dimension=1
    1> ]

    Mais c'est bon maintenant ! je ne savais pas comment initialiser un type array, mais c'est comme un tableau en fait.

    Merci !

Discussions similaires

  1. Commander le port parallele en Visual Basic
    Par invitece65c535 dans le forum Électronique
    Réponses: 35
    Dernier message: 17/12/2012, 15h10
  2. envoyer des caractere sur port serie avec gtk+
    Par inviteae955b90 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 14/03/2010, 19h29
  3. envoyer des donnee de pic vers pc par port serie
    Par invite7cb641da dans le forum Électronique
    Réponses: 4
    Dernier message: 25/05/2009, 00h14
  4. Envoyer 5V sur port parallele
    Par invite6b16322d dans le forum Électronique
    Réponses: 14
    Dernier message: 31/01/2009, 21h24
  5. Port serie/USB ===> port paralléle
    Par invited60b6f1f dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 07/11/2007, 20h52
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...