Comment puis-je utiliser dataReceived cas de la SerialPort Port de l'Objet en C#?

Je cherche à créer une petite application qui permet de recueillir des données reçues à partir d'un capteur externe attaché à COM10. J'ai réussi à créer un petit C# console objet et l'application qui ouvre le port et les flux de données dans un fichier pour une période de temps déterminée à l'aide d'une boucle for.

Je voudrais le convertir cette application pour utiliser le dataReceived événement pour diffuser à la place. Après la lecture de la Top 5 Des SerialPort Conseils, je ne peux toujours pas semblent travail et ne sais pas ce que je suis absent. J'ai réécrit la console de l'application, de sorte que tout le code est dans la main et il est collé ci-dessous. Quelqu'un peut-il aider s'il vous plaît m'éclairer sur le pourquoi de la gestionnaire d'événement port_OnReceiveDatazz n'est pas appelée, même si je sais qu'il y a de données envoyées vers le port par le matériel?

Grâce

Azim

PS: Merci à @Gabe, @Jason Bas, et @abatishchev pour toutes les suggestions. Je suis perplexe et ne pouvez pas sembler obtenir le gestionnaire d'événement à travailler. Peut-être qu'il a quelque chose à voir avec l'appareil. Je peux vivre avec, juste la lecture du port dans un thread et streaming les données directement dans un fichier.


Code


namespace serialPortCollection
{   class Program
    {
        static void Main(string[] args)
        {

            const int bufSize = 2048;
            Byte[] buf = new Byte[bufSize]; //To store the received data.

            SerialPort sp = new SerialPort("COM10", 115200);
            sp.DataReceived += port_OnReceiveDatazz; //Add DataReceived Event Handler

            sp.Open();
            sp.WriteLine("$"); //Command to start Data Stream

            //Wait for data or user input to continue.
            Console.ReadLine();

            sp.WriteLine("!"); //Stop Data Stream Command
            sp.Close();
        }

       //My Event Handler Method
        private static void port_OnReceiveDatazz(object sender, 
                                   SerialDataReceivedEventArgs e)
        {
            SerialPort spL = (SerialPort) sender;
            const int bufSize = 12;
            Byte[] buf = new Byte[bufSize];
            Console.WriteLine("DATA RECEIVED!");
            Console.WriteLine(spL.Read(buf, 0, bufSize));
        }
    }
}
  • Qu'est-ce exactement ne fonctionne pas?
  • B: Le gestionnaire d'événement n'est jamais appelée, même si la réception de données.
InformationsquelleAutor Azim | 2009-01-21