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

Langages Discussion :

Problème conversion de type en VB


Sujet :

Langages

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 15
    Points
    15
    Par défaut Problème conversion de type en VB
    Bonjour,

    J'ai un petit soucis en VB, je suis totalement débutant dans ce langage et j'essaie de créer une interface graphique pour communiquer en liaison série avec une carte électronique, pour récupérer des données. Le seul langage que je connaisse c'est le C.

    Mon problème est que ma carte électronique retourne 2 bytes représentant un 16 bits signé (short), que je récupère dans une trame provenant de la liaison série, un MSB et un LSB . Habituellement en C c'est très simple, je prend mon MSB je le décale de 8 bits, j'y ajoute le LSB et j'affecte ça dans le short en opération bit à bit sans soucis. Mais là pas moyen. J'ai l'impression que le passage du non signé au signé est problématique.

    J'ai essayé d'assembler mes 2 octets dans un UShort (OK) puis de faire un "Or" avec sur la variable final signée (KO) ou de le convertir en Short via CShort (KO).

    Je sèche.

    Sam,

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Concaténer les 2 octets en UShort ne pose pas de problème. Du coup j'ai plutôt essayé BitConverter.ToInt16, il inverse les 2 octets et ajoute des octets je ne sais pas pourquoi.

    Résultat attendu 0xFF9A, résultat de la fonction 0xFFFF9AFF. Les 2 octets sont inversés. J'ai essayé de masquer et inverser les octets avec du décalage de bits mais il me retourne une erreur.

    EDIT: D'ailleurs je vais avoir le même problème avec un "single". Besoin de positionner 4 bytes indépendant dans un single pour le reconstituer.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    .Revert sur les octets inverse les octets
    après tu peux chercher little endian et big endian

    et bitconverter.toint16 ne peux rajouter d'octets, il retourne un int16 à partir de 2 octets

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Merci j'ai résolu en mettant un buffer tampon avant le bitconverter pour inverser les 2 octets.

    Apparemment cette inversion est dû au fait que la machine soit little ou big endian. Par mesure de précaution il vaut mieux que je check l'endianess de la machine si je veux exporter l'appli plus tard ?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    tout à fait

    après je crois qu'il n'y a que les processeurs intel IA64 (sur pc) qui soient différents des autres (j'ai cru comprendre que ca venait plus du processeur que de l'os)
    ces processeurs étaient peu répandus

    après sur des protocoles de communications vers autre chose que des pcs tout existe je pense, donc c'est toujours mieux de gérer ça d'une manière ou d'une autre

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    OK j'ai ajoutais le contrôle, pour le peu de code que ça prend en plus....

    Merci pour l'aide!

Discussions similaires

  1. [C# 2.0] Problème de conversion de type
    Par freerider1 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 11/08/2017, 13h50
  2. Problème conversion de types
    Par belfort90 dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/06/2013, 15h47
  3. [WD10] Problème de conversion de type
    Par rphenix dans le forum WinDev
    Réponses: 2
    Dernier message: 15/01/2007, 14h22
  4. [Excel] Problème de conversion de type de données
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 12h26
  5. Problème conversion de type
    Par gengen dans le forum Access
    Réponses: 3
    Dernier message: 14/04/2006, 10h53

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