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

C# Discussion :

[C#]Comment ecrire entier converti en caractères sur COM1?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut [C#]Comment ecrire entier converti en caractères sur COM1?
    Bonjour , j'ai acheté une carte E/S .les programmes fournis avec celle ci fonctionnent tres bien . je tente d'ecrire sur le port COM1 un entier converti en caractere .cette carte possède 8 relais (Comelec FT357) .Pour commander ces relais il faut envoyer ** data # . data etant un caractere (ascii de 0 à 255) . Mon pb est que les relais ne sont plus commandés dès que la valeur depasse 127 ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialPort1.WriteLine("**" + Chr(valeur) + "#");
    j'ai récupéré une fonction pour le Chr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (asciiCode >= 0 && asciiCode <= 255)
     
    {
     
    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
     
    byte[] byteArray = new byte[] { (byte)asciiCode };
     
    string strCharacter = asciiEncoding.GetString(byteArray);
     
    return (strCharacter);
     
    }


    sachant que le code en Basic fournis avec la carte (et qui fonctionne ) est :

    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
    REM***********************************************************
    REM File:IO232.BAS Data:30/08/2000
    REM CONTROLLO 8 OUT 8 IN DIGITALI E 2 IN A/D CON PORTA RS 232
    REM (C) 2000 Futura Elettronica snc
    REM***********************************************************
     
    OPEN "COM2:9600,N,8,1,rs,cs0,ds0" FOR RANDOM AS #10
     
    DO
        a$ = ""
        DO WHILE a$ = "" OR VAL(a$) < 0 OR VAL(a$) > 255
            CLS
            PRINT "Digita valore di OUTPUT da 0 a 255 (A=abbandona)";
            INPUT a$
        LOOP
        IF a$ = "a" OR a$ = "A" THEN
            CLOSE #10
            EXIT DO
        END IF
     
        PRINT #10, "**" + CHR$(VAL(a$)) + "#";
     
        digital$ = INPUT$(1, #10)
        ad1$ = INPUT$(1, #10)
        ad2$ = INPUT$(1, #10)
     
        PRINT "Ingressi ="; ASC(digital$);
        PRINT "Convertitore A/D 1 ="; ASC(ad1$);
        PRINT "Convertitore A/D 2 ="; ASC(ad2$)
     
        SLEEP 5
    LOOP
    END

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Une solution en utilisant un tableau de Byte plutôt qu'un String pour la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                byte[] mess = new byte[5];
                mess[0] = (byte)'*';
                mess[1] = (byte)'*';
                mess[2] = 0;
                mess[3] = (byte)'#';
                mess[4] = (byte)'\n';
                port.Write(mess, 0, mess.Length);
    Il suffit d'affecter la bonne valeur à mess[2] avant le Write.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut Génail Merci !!!
    ca marche super !!!! une belle epine du pied que tu m'enlèves !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (valeur !> 255)
    {
       valeur = valeur +1;
       byte[] mess = new byte[5];
       mess[0] = (byte)'*';
       mess[1] = (byte)'*';
       mess[2] = (byte)valeur;
       mess[3] = (byte)'#';
       serialPort1.Write(mess, 0, mess.Length); 
       label1.Text = valeur.ToString();
       label2.Text = Chr(valeur).ToString();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ecrire sur la meme ligne avec la commane ECHO
    Par juflata dans le forum Windows
    Réponses: 3
    Dernier message: 24/11/2015, 09h06
  2. Réponses: 9
    Dernier message: 19/12/2006, 12h02
  3. Réponses: 2
    Dernier message: 21/06/2006, 10h52
  4. comment ecrire en arabe sur les basse de données
    Par infocher dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2006, 16h03
  5. Comment ecrire du code sur plusieurs lignes?
    Par tooneygirl dans le forum Access
    Réponses: 5
    Dernier message: 15/06/2005, 16h03

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