VS 2008 Envoie de Bytes sur le port serie à partir d'un String composés de Bytes
mediax2
Messages postés4Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention 5 septembre 2011
-
27 oct. 2008 à 17:48
mediax2
Messages postés4Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention 5 septembre 2011
-
28 oct. 2008 à 00:37
Hello à tous, je sollicite votre aide pour un bout de code que je n'arrive décidément pas à mettre en place (mon projet est fini à 99% )
Voilà mon problème
J'ai réalisé une simple application pour réceptionner des Bytes du port serie et les envoyer via Socket à une autre application qui me renvoie le même nombre de Bytes (différents) toujours via Socket
Mais losque j'essaye de renvoyer les bytes reçus vers le port série rien ne va plus ! (les bytes reçu sont concaténés dans un String)
En effet, Comment envoyer un String composé de Bytes (exemple: "FADC56EC90A2EE5BDACB")
La plupart de code que j'ai trouvé envoie un string vers le port rs232 en le transmortant en byte au préalable
Par exemple
Dim b As Byte()
b = Encoding.Default.GetBytes(sockstring)) 'dans sockstring on trouve le string FADC56EC90A2EE5BDACB
SerialPort.Write(b, 0, b.Length)
Le code prend la chaine sockstring comme un simple string (du genre "hello World")
Votre aide sera la bienvenue
Pour info, voici la procédure que j'utilise pour lire les bytes sur le port série
Private Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived
Dim nb_octet As Integer = RS232.BytesToRead ' on récupère le nombre d'octet présent dans le tampon
Dim trame(nb_octet - 1) As Byte ' Tableau acceuillant les données au format byte
RS232.Read(trame, 0, nb_octet) 'on lit le port
Dim donnee As String = System.Text.Encoding.ASCII.GetString(trame) ' on récupère les données au format ASCII
'On va convertir tous les octets du tableau en valeurs Hexadecimal pour les afficher à l'écran
Array.ForEach(Of Byte)(trame, AddressOf Trt_Trame)
End Sub
Private Sub Trt_Trame(ByVal bit As Byte)
'on appelle le délégué pour afficher les données
If Me.InvokeRequired Then
Me.Invoke(New _affiche_Hexa(AddressOf Affiche_Hexa), Hex(bit).PadLeft(2, "0"))
End If
End Sub
Private Sub Affiche_Hexa(ByVal donnee As String)
RTB_Hexa.AppendText(donnee) 'on affiche les données à l'écran
End Sub
Merci d'avance
ps: les data viennent d'un port µControleur vie son port UART
mediax2
Messages postés4Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention 5 septembre 2011 28 oct. 2008 à 00:37
J'ai trouvé
Je transforme le string en Ascii puis seulement j'utilise le Bytes array pour l'envoie sur RS232
For x = 1 To tstring.Length Step 2
buffer = Strings.Mid(tstring, x, 2)
output = output + TxConv(buffer) ' Appel d'une procedure de transformation Byte en Ascii (tirée de VB6....je sais j'ai honte)
Next