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 :

rs232 -> modem -> char 7 bits


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut rs232 -> modem -> char 7 bits
    Hello,

    Je dois me connecter sur une machine outil via une liaison RTC avec comme parametre de communication 1200,7,E,1.

    Pour cela j'ai fait un fait petit programme qui utilise les API win32 (createfile,readfile,writefile,closefile...) pour commiuniquer avec ma machine outil.

    J'ai testé ce programme avec une autre machine outil qui lui est relié seulement au port serie avec comme parametre 4800,8,N,1.(tout a fonctionné comme je le désirais).

    Mon probleme vient du fait que ma machine outil (via RTC) requiert un char codé en 7 bit ....et a priori readfile ne retourne pas un char sur 7 bits mais 8 bits.

    J'ai fait un test de connection avec l'hyperterminal de xp...il me retourne la meme chaine (caracteres avec accents) que mon programme.Par contre si j'active l'option FORCER le retour en ASCII 7 bit dans l'hyperterminal ....la chaine retournée est bien celle que j'attendais.

    D'ou ma question comment convertir un char 8 bit en 7 bit pour writefile (pour la commande), et convertir un char 8 bit en 7 bit venant de readfile (pour la reponse de la commande qui lui est codé en 8 bit mais devrait etre en 7 bit ).

    En vous remerçiant par avance de vos solutions.

  2. #2
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Essaye avec un champ de bits:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unsigned int c : 7;

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Pour obtenir les 7 bits de données à partir d'un byte de 8 bits, le plus simple est sans doute de faire un mask pour annuler le bit de poids fort : carac7 = carac8 & 0x7F.

    En sens inverse, cela peut dépendre de l'application : le passage de 7 bits de données à un byte de 8 bits peut se faire en mettant le bits de poids fort à 0, à 1, à parité paire, à parité impaire ou à n'importe quoi si il est ignoré par le destinataire.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut
    Hello,

    Merci pour vos 2 réponses.

    J'ai pu résoudre mon problème avec vos solutions.
    j'ai utilisé un union pour faire mes conversions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char MonCaractereProbleme;
     
    union{
    char v8;
    unsigned int v7 : 7;
    unsigned int v6 : 6;
    unsigned int v5 : 5;
    }zConver;
     
    zConver.v7=MonCaractereProbleme; // zConver.v7 a maintement le bon code ASCII sur 7 bit.

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

Discussions similaires

  1. Probleme Socket UDP Char 8 bits
    Par Jazys dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 09/08/2011, 17h23
  2. Réponses: 12
    Dernier message: 12/03/2006, 15h53
  3. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57
  4. extraction de bits d'un short (ou d'un char)
    Par julie20 dans le forum C
    Réponses: 5
    Dernier message: 17/10/2005, 11h47
  5. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10

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