Peut on mettre un int dans un char

Résolu
kintos Messages postés 3 Date d'inscription jeudi 22 octobre 2009 Statut Membre Dernière intervention 5 décembre 2009 - 5 déc. 2009 à 11:55
sadiki_salah Messages postés 2 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 8 décembre 2009 - 8 déc. 2009 à 16:05
Bonjour
je débute en VB et ne sais pas encore bien m'exprimer alors désoler si le titre ne correspond pas à ma demande.

je souhaite envoyer un trame avec un cheksum.pour l'envoyer et la réception des @ émetteur et récepteur ainsi que du message il n'y a pas de problème par contre l'envoie du cheksum me pose quelque difficulté.
Donc je voudrais savoir si on peut mettre un integer dans un char.

Explication de ma pensé j'ai,par exemple, un cheksum de 223 stocker dans une variable integer, je voudrais que le nombre 223 soit stocker dans un variable char.

merci de à tous ce qui vont m'aider je suis ouvert à toute autre proposition pour envoyer et traité le cheksum

5 réponses

kintos Messages postés 3 Date d'inscription jeudi 22 octobre 2009 Statut Membre Dernière intervention 5 décembre 2009
5 déc. 2009 à 21:50
C'est bon j'ai réussi à résoudre mon problème.
pour les personnes qui passerons après moi j'ai simplement diviser mon crc par 10 ce qui me donne l'arrondi supérieur.comme quoi c'est la solution vient toute seule quand on si attend le moins.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 déc. 2009 à 12:51
Salut
CheckSum de quoi ?
Envoyer une trame vers quoi ?
De quoi parles-tu ? D'une communication ? D'un CRC ?
Confirme-nous que tu es bien sous VB.Net (2005, 2008 ou 2010)

Voir éventuellement les fonctions CHR ou ASC

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 déc. 2009 à 13:26
salut,

en effet c'est pas clair du tout
peut-être une confusion BYTE et CHAR ???

bref pour la question (au cas où), oui c'est possible :
Dim c As Char = Convert.ToChar(223)


++

[hr]
0
kintos Messages postés 3 Date d'inscription jeudi 22 octobre 2009 Statut Membre Dernière intervention 5 décembre 2009
5 déc. 2009 à 13:46
on veut créer un réseaux de 4 Pc en RS485 pour comprendre comment en Vb on peut gérer les trames pour une exploitation plus complexe ultérieur,
donc on calcul le cheksum du message à envoyer pour éviter les erreurs de réception car le local est très "pollué"
Sinon je suis sous VB 2008 pour vous aider à mieux comprendre mon problème voici le code que j'ai fais il ne s'agit que d'une ébauche très restrictif de l'envoie de la trame
j'ai essayer ce qui a étais dit ultérieurement sans succès.
Imports System.IO.Ports

Module module1
    Dim WithEvents comport As SerialPort
    Sub main()

        Dim text As String
        Dim dest As Byte
        Dim i As Integer
        Dim env(31) As Byte
        Dim tabdest(29) As Char
        Dim crc As Integer = 0
        comport = New SerialPort("com4", 9600, Parity.Even, 8, StopBits.One)
        Console.Write("destinataire :")
        dest = Console.In.ReadLine()
        Console.Write("text à  émettre :")
        text = Console.In.ReadLine()
        tabdest = text.ToCharArray
'création de la trame à envoyer 
        i = 1
        Do
            env(i + 1) = Asc(tabdest(i - 1))
            i = i + 1
        Loop Until i > text.Length

        env(1) = 6
        env(0) = dest
'calcul du cheksum appeler crc
        i = 2
        Do
            crc = env(i) + crc
            i = i + 1
        Loop Until i = 31
        crc = crc And 255
        env(31) = crc
'envoie de la trame ici ce trouve mon problème avec le crc si il dépasse 127 
        comport.Open()
        i = 0
        Do
            comport.Write(CStr(Chr(env(i))))
            i = i + 1
        Loop Until i = 31

        comport.Close()


    End Sub
  Sub reception(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles comport.DataReceived
'réception de la trame envoyer et mise dans un tableau 
        System.Threading.Thread.Sleep(100)
        Dim nbytes As Integer = comport.BytesToRead()
        Dim combuffer As Byte() = New Byte(nbytes - 1) {}
        Dim crc = 0, i As Integer
        comport.Read(combuffer, 0, nbytes - 1)
'traitement de la trame reçut si bonne adresse destinataire 
        If combuffer(0) = 4 Then
'calcul du crc avec les données reçut 
            i = 2
            Do
                crc = combuffer(i) + crc
                i = i + 1
            Loop Until i = 31
            crc = crc And 255
'affichage du message 
            Console.WriteLine("")
            Console.Write("message de " + CStr(combuffer(1)) + ":")
'quand je réceptionne la trame le crc reçut ne correspond pas avec celui envoyer même en envoie sur port série virtuel 
            If Asc((crc)) <> combuffer(31) Then
                Console.WriteLine("reception d'un message erronné")
            Else

                i = 2
                Do
                    Console.Write(Chr(combuffer(i)))
                    i = i + 1
                Loop Until i = 31
            End If
        End If
        Console.ReadKey(True)

    End Sub
End Module


Merci des réponses futur et de faire abstraction de mes fautes d'orthographe et de grammaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sadiki_salah Messages postés 2 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 8 décembre 2009
8 déc. 2009 à 16:05
la question n'est pas compris
0
Rejoignez-nous