Lire et Stocker des Octets à partir du Port Série

Je suis en train de créer un RS232 application qui lit les données entrantes et les stocke dans une mémoire tampon. J'ai trouvé le code suivant dans un RS232 exemple, mais je ne suis pas sûr de la façon de l'utiliser

*RS232 Exemple port_DataReceived*

    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (!comport.IsOpen) return;

        if (CurrentDataMode == DataMode.Text)
        {
            string data = comport.ReadExisting();

            LogIncoming(LogMsgType.Incoming, data + "\n");
        }
        else
        {
            int bytes = comport.BytesToRead;

            byte[] buffer = new byte[bytes];

            comport.Read(buffer, 0, bytes);

            LogIncoming(LogMsgType.Incoming, ByteArrayToHexString(buffer) + "\n");

        }
    }

Je suis en train d'écrire une autre méthode qui prend l'arrivée d'un tableau d'octets et il se combine avec un autre tableau ... voir ci-dessous:

private void ReadStoreArray()
{
   //Read response and store in buffer
   int bytes = comport.BytesToRead;
   byte[] respBuffer = new byte[bytes];
   comport.Read(respBuffer, 0, bytes);   

   //I want to take what is in the buffer and combine it with another array
   byte AddOn = {0x01, 0x02}
   byte Combo = {AddOn[1], AddOn[2], respBuffer[0], ...};
}

J'ai actuellement deux méthodes dans mon code que je ne sais pas comment faire pour lire et stocker les octets entrants sur le port. Puis-je utiliser le "port_DataReceived" de la méthode dans mon "ReadStoreArray" méthode? Dois-je modifier mon "ReadStoreArray" méthode? Ou devrais-je recommencer?

La première est une fonction de gestionnaire d'événement: msdn.microsoft.com/en-us/library/.... Il sera appelé automatiquement lorsque vous ajouter l'événement à votre port. Ont port_DataReceived appel ReadStoreArray au lieu de LogIncoming
Vous aurez besoin de garder à l'esprit que vous ne pouvez pas recevoir la totalité de votre message dans un gestionnaire d'événement. Vous avez besoin de lire jusqu'à ce que vous obtenir le nombre d'octets dont vous avez besoin.
Merci pour votre réponse. Dans la plupart des cas, je veux quitter le gestionnaire d'événements. Je ne veux combiner la réponse avec un autre tableau pour la méthode mentionnée ci-dessus "ReadStoreArray". Comment pourrais-je tirer les octets lus dans le "tampon" dans mon "ReadStoreArray" méthode?
Par exemple je voudrais stocker la réponse dans un nouveau tableau dans l'ordre à manipuler (c'est à dire lire certains octets, combiner avec un autre tableau). Est-il un moyen de capturer la réponse et de le stocker dans un tableau dans le "ReadStoreArray" méthode?
Dans port_DataReceived passer tampon à ReadStoreArray. J'ai posté un exemple

OriginalL'auteur Nevets | 2014-01-24