PORT COM simple probleme pour recevoir donnée

mickbristol78 - 4 avril 2013 à 13:56
 mickbristol78 - 5 avril 2013 à 09:14
Hello,
Je veux faire une simple connexion avec mon port serie.
Je veux pas m'empbrouiller avec les stopbit, parity etc.. en propriete car ma connexion sera toujours la meme, du coup ma class CommunicationManager est relativement simple.

    class CommunicationManager
    {
        private SerialPort comPort = new SerialPort();

        public CommunicationManager()
        {
            comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);
        }

        public void WriteData(string msg)
        {
            if (comPort == null)
            {
                MessageBox.Show("Please connect to correct port...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else comPort.Write(msg);
        }

        public void OpenPort(string portName)
        {
            comPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
            comPort.Open();
        }

        void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string msg = comPort.ReadExisting();
            MessageBox.Show(msg);

        }
    }


depuis ma form principal j'ai
        CommunicationManager myport = new CommunicationManager();


et 2 boutons
        private void button1_Click(object sender, EventArgs e)
        {
            myport.OpenPort(comboBoxPortCOM.Text);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            myport.WriteData("D");
        }


le probleme c'est que je ne recoit pas le message que mon appareil a envoyé de retour a l'ordi. En autre mots on dirait que mon event ajouter
comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);

n'est pas pris en compte, car je passe jamais dans ma method
        void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string msg = comPort.ReadExisting();
            MessageBox.Show(msg);
        }


j'ai essayé avec d'autre prog trouvé sur le net et ceux ci recoivent bien mon message retourné, par contre j'arrive pas trop a comprendre leur demarche. mais ca montre bien que mon appareil envoie bien la commande retour.

des idees ?

Merci

2 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
5 avril 2013 à 09:05
Bonjur,
Un problème de paramétrage, est-tu sûr que ton appareil recoit la commande.
Ensuite verifie le paramètre SerialPort.ReceivedBytesThreshold.
pour les test met-le à 1 pour commencer.

Par rapport aux autres programmes, vérifie ce qui change.

louis
0
mickbristol78
5 avril 2013 à 09:14
Bonjour,
oui je suis pratiquement sur et certain qu'il recoit et qu'il reponds (c'est une carte avec un PIC)
j'utilise un converter serie/usb FTDI, et je vois bien la LED qui emet losrque la commande est renvoyée.
De plus j'ai testé avec un autre program que le mien et le program recoit bien le retour.
Aussi j'ai utilisé la meme configuration dans une autre application et il recevait bien.

la seul et grosse difference c'est que maintenant j'utilise une class pour ma connexion manager, car je veux pouvoir acceder a la connexion depuis une form fille.
Dans mon application precedente, je declarais le port serie est fesais l'emission/reception tout inclu dans la form principal.

vu que je suis pas un pro avec les class, je pensais que mon event n'etait pas enregistré correctement, ou qq chose dans le genre ?

merci
0
Rejoignez-nous