L'envoi de données UDP, y compris à l'aide de hex VB.NET

Comme un hobby, je suis intéressant dans la programmation Ethernet connecté signe de LED pour faire défiler les messages à travers un écran. Mais je vais avoir du mal à faire un UDP expéditeur dans VB.NET (je suis en utilisant 2008 actuellement).

Maintenant le signe est assez agréable d'avoir une feuille de spécifications sur la programmation pour ce.

Mais un exemple d'une ligne à envoyer (page 3):

<0x01>Z30<0x02>AA<0x06><0x1B>0b<0x1C>1<0x1A>1This message will show up on the screen<0x04>

Avec les codes comme <0x01> représentant la tête du personnage.

Maintenant, pour envoyer ce le signe-je besoin pour utiliser UDP. Cependant, les exemples que j'ai tous les encode le message que ASCII avant de les envoyer, comme celui-ci (à partir de UDP: le Client envoie les paquets, et reçoit des paquets à partir d'un serveur):

Imports System.Threading
Imports System.Net.Sockets
Imports System.IO
Imports System.Net


Public Class MainClass
   Shared Dim client As UdpClient
   Shared Dim receivePoint As IPEndPoint


   Public Shared Sub Main()
      receivePoint = New IPEndPoint(New IPAddress(0), 0)
      client = New UdpClient(8888)
      Dim thread As Thread = New Thread(New ThreadStart(AddressOf WaitForPackets))
      thread.Start()


         Dim packet As String = "client"
         Console.WriteLine("Sending packet containing: ")

         '
         ' Note the following line below, would appear to be my problem.
         '

         Dim data As Byte() = System.Text.Encoding.ASCII.GetBytes(packet)
         client.Send(data, data.Length, "localhost", 5000)
         Console.WriteLine("Packet sent")

   End Sub

   Shared Public Sub WaitForPackets()
      While True
         Dim data As Byte() = client.Receive(receivePoint)
         Console.WriteLine("Packet received:" & _
            vbCrLf & "Length: " & data.Length & vbCrLf & _
            System.Text.Encoding.ASCII.GetString(data))

      End While

   End Sub ' WaitForPackets

End Class

Pour une sortie en hexadécimal dans VB.NET je pense que la syntaxe peut éventuellement être &H1A - d'envoyer ce que le cahier des charges serait de définir comme <0x1A>.

Pourrais-je modifier ce code, afin d'envoyer correctement correctement formaté paquet de ce signe?

Les réponses de Subvention (après l'envoi d'un paquet avec hex), Hamish Smith (à l'aide d'une fonction permettant d'obtenir les valeurs en hexadécimal), et Hafthor (codé en dur (chr) un message par exemple) lors de la tentative de tout n'a pas fonctionné. Donc je vais de recherche pour voir ce qui pourrait aller mal. En théorie, si cette chaîne est envoyée avec succès, je devrais avoir un message contenant "OK", ce qui l'aide à savoir quand il fonctionne.

J'ai essayé et je suis maintenant en mesure de surveiller les paquets. Un travail de paquets exemple est la suivante (en raw hex): http://www.brettjamesonline.com/misc/forums/other/working.raw vs ma version: http://www.brettjamesonline.com/misc/forums/other/failed.raw. La différence est mes codes hexadécimaux sont pas encore codé correctement, vu de ce côté-à-côte l'image: http://www.brettjamesonline.com/misc/forums/other/snapshotcoding.png.

J'ai utilisé ce code pour générer le paquet et l'envoyer:

container = &H1 & "Z" & &H30 & &H2 & "temp.nrg" & &H1C & "1Something" & &H4
    '    This did not appear to work neither
    'container = Chr(&H1) & "Z" & Chr(&H30) & Chr(&H2) & Chr(&H1C) & "1Something" & Chr(&H4)
    '<0x01>Z00<0x02>FILENAME<0x1C>1Test to display<0x04>   <- the "official" spec to send
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(container)

(Full extrait de: http://pastebin.com/f44417743.)

Ok, j'ai repris à la recherche à de cette. J'ai découvert à l'aide de wireshark me permet d'afficher les raw udp paquets envoyés. Il semble à l'exemple de code que j'ai utilisé, L'hexagone charecters sont à venir en blanc (00) caractères dans le paquet.
Vous n'avez jamais eu de succès avec cette entreprise? J'ai un de ces signes qui dispose d'un port série pour envoyer des commandes et je n'ai pas eu de chance, mais avec lui envoyant des commandes.
Ouais, j'ai résolu il y a un moment, avec un rattrapage séparé de tout cela, est un "contrôle" de la partie de code que vous devez définir. En bref, vous devez créer un fichier sur la RAM de la partie à la place de Flash pour la fiabilité à long terme. La partie n'est pas documenté, donc j'ai eu la force de le faire ponctuellement par l'intermédiaire d'un maladroit application windows. Une fois que cela a été fait si, j'ai eu une classe en php écrites pour gérer l'envoi (il a été fait via ethernet)

OriginalL'auteur SuperRoach | 2008-10-04