Conversion Caractères en hexadécimale
MegaRadio
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjours à tous,
je but depuis quelque temps sur un problème de conversion : je souhaite saisir 3 caractères hexa par une texbox, et ensuite fabriquer une adresse sur deux octets (msb,lsb).
le contrôle de saisie des caractères hexa fonctionne,(If IsNumeric("&H" & Text1.Text)), le but est mettre les deux caractères de droite dans l'octet de poids faible (LSB) et le caractère de gauche dans l' octet de poids fort(msb).
en finale le format sera au maximum de 'FFF', donc 2 octets.
Exemple en binaire : FFF = 00001111 11111111 - 1FF = 00010000 11111111 - 00F = 00000000 00001111.
j'ai pris ces exemples pour ne pas qu'il y est de confusion dans les différents codes.
Ce programme est destiné à lire et écrire dans les paramètres de pic (16F690).
Pour la partie paramètres, je n'ai pas eu de difficulté parce que les adresses ne sont pas saisies mais écrites sous forme : &h01 & &hFF, le tout est transmis par une liaison série.
je vous mets le programme d'essai en cours (c'est un peu le fouillis)
Merci d'avance de vous pencher sur ce petit problème ( petite précision, je suis un débutant de 71 ans)
je but depuis quelque temps sur un problème de conversion : je souhaite saisir 3 caractères hexa par une texbox, et ensuite fabriquer une adresse sur deux octets (msb,lsb).
le contrôle de saisie des caractères hexa fonctionne,(If IsNumeric("&H" & Text1.Text)), le but est mettre les deux caractères de droite dans l'octet de poids faible (LSB) et le caractère de gauche dans l' octet de poids fort(msb).
en finale le format sera au maximum de 'FFF', donc 2 octets.
Exemple en binaire : FFF = 00001111 11111111 - 1FF = 00010000 11111111 - 00F = 00000000 00001111.
j'ai pris ces exemples pour ne pas qu'il y est de confusion dans les différents codes.
Ce programme est destiné à lire et écrire dans les paramètres de pic (16F690).
Pour la partie paramètres, je n'ai pas eu de difficulté parce que les adresses ne sont pas saisies mais écrites sous forme : &h01 & &hFF, le tout est transmis par une liaison série.
je vous mets le programme d'essai en cours (c'est un peu le fouillis)
Merci d'avance de vous pencher sur ce petit problème ( petite précision, je suis un débutant de 71 ans)
Private Sub Text1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Text1.TextChanged Dim Variable_ASCII As String Dim Pnt_Hexa As Byte Dim Hexa_Code As Byte 'Dim Tab_Hexa() As Byte = {"0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F"} 'Dim Tab_Hexa() As Byte = {"&H0,&H1,&H2,&H3,&H4,&H5,&H6,&H7,&H8,&H9,&HA,&HB,&HC,&HD,&HE,&HF"} 'Saisie 3 caractères Hexa. dim (Number As Byte) As String If IsNumeric("&H" & Text1.Text) Then ' Vérifie si Caractère Hexa Ok. TextBox4.Text = Text1.Text Variable_ASCII = TextBox4.Text.Substring(Num_Car, 1) 'Saisie le caractère courant OK. Num_Car = Num_Car + 1 If AscW(Variable_ASCII) >= 65 Then ' Fabrique un pointeur pour le tableau hexa. Pnt_Hexa = AscW(Variable_ASCII) - 54 ' si lettre. Else Pnt_Hexa = AscW(Variable_ASCII) - 48 ' Si chiffre. End If Hexa_Code = Convert.ToByte(TextBox4.Text) 'Hexa_Code = (Tab_Hexa, 0, 2) End If End Sub
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Conversion Caractères en hexadécimale
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Éditeur hexadécimal en ligne - Télécharger - Édition & Programmation
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Caractères spéciaux mac - Guide
2 réponses
Bonsoir
je ne suis pas sûr d'avoir compris
Sinon, on a tous débuté un jour.
Ce qui est judicieux c'est de commencer par les bases, ce cours est bien
https://plasserre.developpez.com/cours/vb-net/
D'autre part, tu mélanges VB6 et VB.Net, c'est déconseillé, voir ce petit article
https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net
je ne suis pas sûr d'avoir compris
Dim hexa As String = "ABC" Dim debut As String = hexa.Substring(0, 1) Dim fin As String = hexa.Substring(1) Dim poidsFort As String = Convert.ToString(Integer.Parse(debut, System.Globalization.NumberStyles.HexNumber), 2) Dim poidsFaible As String = Convert.ToString(Integer.Parse(fin, System.Globalization.NumberStyles
Sinon, on a tous débuté un jour.
Ce qui est judicieux c'est de commencer par les bases, ce cours est bien
https://plasserre.developpez.com/cours/vb-net/
D'autre part, tu mélanges VB6 et VB.Net, c'est déconseillé, voir ce petit article
https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, moi je ferais ainsi, si je voulais vraiment saisir 3 caractères hexa par une texbox, et ensuite fabriquer une adresse sur deux octets (msb,lsb):
- convertir les trois caractères hexa en trois nombres (de 0 à 15): c1, c2, c3
-
- convertir les trois caractères hexa en trois nombres (de 0 à 15): c1, c2, c3
-
Dim resultat As Integer Dim c1 As Integer, c2 As Integer, c3 As Integer resultat = ((c1 * 16) + c2) * 16 + c3
Désolé, je pense que cela ne correspond pas à ce que je souhaite, car au niveau du resultat, il faut que l'adresse soit sur deux octets pour êtres transmit par liaison série au "PIC".
J'ai mis un nouvel exemple de ce qui fonctionne bien dans le cas où les adresses sont dans le programme et non saisie par une textbox.
Encore merci de votre aide.
J'ai mis un nouvel exemple de ce qui fonctionne bien dans le cas où les adresses sont dans le programme et non saisie par une textbox.
Encore merci de votre aide.
Dans l'adresse que je dois transmettre, l'octet poids fort (dans l'exemple "ABC") aura pour valeur : Décimale 10 - Hexa 0A - Binaire 00001010, et pour les poids faibles : Décimale 188 - Hexa BC - Binaire 1011 1100.
Comme je l'indiquais, je n'ai pas eu de problème avec les adresses écrites dans le programme style : &h04 & &hFF.
ci-dessous, une partie du prg qui fonctionne bien, dans lequel on voit la déclaration et le chargement de MSB et LSB en hexa.
Voila pour l'instant les précisions que je peux vous apporter (J'utilise Visual Basic express 2010).
Public Addr_Bin_Msb As Byte
Public Addr_Bin_Lsb As Byte
Public Val_Bin As Byte
Addr_Bin_Msb = &H11 ' Charge l'adresse MSB.
Addr_Bin_Lsb = &HA ' Charge l'adresse LSB.
Sub TRANSCOM() ' Ecriture Port Serie COM1
' Reading Bank 2 octets pour l'adresse à lire.
If Writ_Read = "Reading" Then ' Transfert de deux octets
Dim data_Trans As Byte() = {&H3, Addr_Bin_Msb, Addr_Bin_Lsb} ' Nombre de byte et Assemblage des deux bytes.
SerialPort1.Write(data_Trans, 0, 3) ' Transmet le tabeau.
End If
' Writing Bank
If Writ_Read = "Writing" Then ' Transfert de trois octets, deux octets pour l'adresse et un pour la valeur paramètre.
Dim data_Trans As Byte() = {&H4, Addr_Bin_Msb, Addr_Bin_Lsb, Val_Bin} ' Assemble les trois.
SerialPort1.Write(data_Trans, 0, 4) ' Transmet le tabeau.
Call CONVERTION(Val_Bin) ' Sub Routine Conversion pour affichage
Call CONVERTION_DISPLAY() ' en décimale, hexa, binaire
End If
End Sub
à l'avenir, merci d'utiliser la coloration syntaxique.
Quand Baladur13 a corrigé ta question initiale, il a mis un gros encart bleu pour attirer ton attention sur ce point.
Au centre de cet encart, se trouve un lien vers le petit tuto.
Ça fait bien longtemps que je ne me fatigue plus à décrypter des codes non mis en forme, surtout que je vois trainer du VB6 et qu'en plus tu dis que ce code ne te pose pas de problème (alors pourquoi le lire?)
En effet, il semble que j'ai merdé mon copier coller.
Ces 2 lignes sont sensées faire la même chose donc devraient être identiques, aux variables près.
Du coup, je pense que tu peux corriger toi même mon erreur de copier coller.
Oui, en effet, j'ai corrigé l'erreur après avoir envoyé le deuxième message.
J'ai bien essayé d'utiliser la coloration syntaxique, mais apparament ça n'a pas marché, j'essairais une autre fois.
Demain je verrais si je peux utiliser les variables poidsfort, poidsfaible, mais dans l'exemple du deuxième message, ce sont des bytes que je transmet.
Cordialement.
Excellent, ça fonctionne parfaitement, je vais intégrer les modifs dans le programme final.
Actuellement, lorsque je saisie les trois caractères avec la textbox, même si ceux-ci ne sont pas hexa ils sont affichés,
hors je pense qu'il est possible peut-êtres en utilisant "keycode" ou quelque chose comme ça, mais , mes connaissances ne sont pas suffisante.
Encore grand merci de m'avoir décoinsé
Pour la colorisation du programme, est-ce qu'elle peut se faire quand on mets le progamme dans la fenêtre ou lorsqu'on valide, parce que j'ai essayé et ça m'a pas marché.
Bien cordialement.