Comment écrire pour le port COM et attendre une réponse de c#

J'ai besoin d'envoyer des commandes à un port série pour communiquer avec un Enfora modem. Pour chaque commande, je vais obtenir une réponse, mais la longueur de la réponse de la chaîne peut varier.
J'ai besoin de savoir comment écrire et puis l'attente de la réponse jusqu'à la fin...

J'ai donc pensé à faire un thread qui lit à partir du port série et le programme écrit...

La fonction de thread

private void thread_Handler()
{
    while(true)
        this.read();
}
private void read()
{
    if (this.rtbMessages.InvokeRequired)
    {
        try
        {
            SetTextCallback d = new SetTextCallback(read);
            this.Invoke(d);
        }
        catch{}
    }
    else
    {
        readBuffer = serialPort.ReadExisting();
        rtbMessages.AppendText(readBuffer);
    }
}

Donc ce fil est toujours en train de lire à partir du PORT com et je vous envoie les messages de cette façon

writeBuffer = "COMMAND 1";
serialPort.Write(writeBuffer);
writeBuffer = "COMMAND 2";
serialPort.Write(writeBuffer);

Cependant je n'ai pas la réponse à partir de la deuxième commande j'envoie avec Write()...
J'ai essayé de l'enlever le fil et l'utilisation de ReadExisting() après chaque Écriture() mais qui n'a pas fonctionné.

La seule façon que je pourrais l'obtenir pour fonctionner est d'ajouter un

System.Threading.Thread.Sleep(1000);

après chaque appel à Écrire, puis-je obtenir toutes les réponses de chaque Écriture() la commande...
Mais je ne veux pas l'utiliser, je veux vous connaissez une autre façon d'écrire efficacement et obtenir toutes les réponses de chaque commande j'envoie, indépendamment de la longueur de la réponse de la chaîne et combien de temps il faut pour moi de recevoir le message de réponse.

Parfois, je reçois des messages pour toujours jusqu'à ce que j'ai envoyer une autre commande pour arrêter la production de messages.

Merci!

InformationsquelleAutor Renato | 2012-09-06