Analyse/mise en forme des données à partir du port série - C#

J'ai développé un petit programme qui écoute sur un port série. Mon programme est de recevoir des données. Le problème est, il n'est pas afficher dans le format souhaité (une chaîne). Les données de mon programme est de la réception est disponible en deux chaînes de caractères, par exemple:

ID:34242 State:NY

Postal:12345 StreetType:Ave

Son affichée par morceaux et une partie des données est transmis suivant les lignes en tant que tel:

 ID:34242
State:N
Y Zip:12
345 Street
Type:Ave

J'ai utilisé le SerialDataReceive Gestionnaire d'Événement pour recevoir mes données et il ressemble à ceci:

 private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {

        SerialPort spL = (SerialPort) sender;
        int bufSize = 20;
        Byte[] dataBuffer = new Byte[bufSize];
        Console.WriteLine("Data Received at"+DateTime.Now);
        Console.WriteLine(spL.Read(dataBuffer, 0, bufSize));
        string s = System.Text.ASCIIEncoding.ASCII.GetString(dataBuffer);
        Console.WriteLine(s);



    }

Comme vous pouvez le voir, j'ai récupérer les octets dans le tampon, de créer un tableau d'octets pour stocker les données et utiliser le codage ASCII pour traduire les octets en une chaîne de caractères. J'ai essayé d'utiliser ReadLine() mais je n'est pas le cas affiché avec cette fonction. Personne ne sait de toute autre manière à analyser et mettre en forme les données dans une chaîne de caractères?

Est-il un caractère de séparation à la fin de chaque enregistrement? Imprimer le numérique valeurs d'octets, et regardez surtout après le dernier enregistrement envoyé. Les données proviennent comme un flux continu, mais j'espère que le protocole a été conçu avec une sorte de caractère de fin (un retour chariot qui serait normal, mais n'est probablement pas le cas depuis ReadLine ne fonctionne pas pour vous).

OriginalL'auteur Rick | 2012-02-29