IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Problème avec le port série sous Win98


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut [C#]Problème avec le port série sous Win98
    Bonjour,

    Après avoir fait une recherche, je n'ai à priori pas trouvé de solution à mon problème.

    Je communique avec un appareil via le port série. J'ai développé une application C# (framework 1.1 au début, puis 2.0 maintenant pour essayer la classe SerialPort).
    Cette appli fonctionne à Merveilles sous windows 2000 et XP, par contre sous Windows 98, l'écriture sur le port ne fait rien. Je m'explique :

    J'ai branché un espion materiel sur le port série. Sous windows 2000 et XP, les led s'alluments quand j'emet des données sur le port, en revanche sous 98, rien ! Pourtant que ce soit en Framework 1.1 (avec des librairies trouvées sur le Web), ou en framework 2.0 avec la classe fournie, les status sont bon (quand il y'en à) et aucune exception n'est levée...

    Le pire, c'est que sur ce PC avec 98, j'ai essayé une appli (pas en .NET) qui communique sur le même port, avec le même matos (j'ai également branché l'espion), et l'écriture se fait bien, et l'appareil réponds....

    Quelqu'un à déjà vu ça, ou entendu parlé d'un problème de ce genre ? Je sais vraiment plus quoi faire...

    PS : J'ai pas mis le code parce qu'il n'y a rien de particulier et qu'en plus ça fonctionne sur 2000 et XP.

    Merci pour votre participation

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    Oui j'ai eu le même problème, mais moi cela ne venait pas de Win98.

    Premièrement, ton pc qui a Win98 est sans doute moins performant que tes autre ordinateur WinXP ou Win2000, il faut en tenir compte si tu fais des timer pour reception de data: j'ai du ralonger mon timer de reception de 10 ms pour aquerir l'integralité de la trame.

    Deuxiemement, il y a peu voir même aucun tutoriel sur le port serie qui soit clair en FW2.0. et Donc il est possible que ton constructeur de Serial Port soit mal initialisé. (pour ma part j'avais oublié de mettre le membre DtrEnable = True)

    Donc je te file un pti constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                SerialPort Port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); // Definition du port : 9600 baudrate, pas de parité, 8 bits et 1 bit de stop
                Port.ReadTimeout = 100; // 100 ms de temps pour lire le buffer
                Port.WriteTimeout = 100; // 100 ms de temps d'ecriture du buffer
                Port.DtrEnable = true;
                Port.Open(); // ouverture du port (ici le port peut etre occupé par une autre appli)
                Port.DiscardInBuffer();
                Port.DiscardOutBuffer();

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    Merci de ta réponse.

    Oui, out ce que tu dis est vrai, cependant ce que je n'arrive pas à comprendre c'est pourquoi avec un espion materiel branché aux fesses du port série indique qu'il n'y a vraimment aucun signal qui sort du port série sur aucune des broches ?

    Même avec un constructeur mal initialisé, genre le DTR qui n'est pas enable, on devrait avoir des signaux sur la broche Tx. Ce qui n'est pas le cas.

    Et même après avoir mis le DTR, j'ai toujours le résultat...

    Ensuite pour les temps de timeout, j'y avais déjà pensé, et j'ai mis un timeout d'accroche à 2000 ms et un timeout interchar à 200 ms (ce qui est carrement énorme pour les deux). Même avec ça, aucune réponse...

    De toutes manières, je vois pas pourquoi mon appareil répondrait, alors que la question n'a pas été émise... snif...

    Là je dois vraimment avouer que je ne suis pas tomber sur un bug comme celui-la depuis TRES longtemps... lol. D'autant plus qu'avec une autre appli réalisée par nos soins en C fonctionne très bien sur ce même pc...


    Mais merci encore pour tes idées.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Vérifie que le controle de flux est à "aucun" dans le panneau de configiuration.
    Cela pourrai bloquer ta communication.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    pourait tu envoyer un pti code que tu utilise pour tester ton espion materiel j'esairai avec mon espion materiel pour voir d'ou viens le probleme.
    Met ta source en fichier joint a ce sujet.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    En gros voilà les opérations que je fait : (Sous 2000/XP l'espion indique que l'écriture fonctionne, sous 98, pas d'écriture)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    byte[] vl_Buffer = {0x01, 0x04, 0x03, 0xE8, 0x00, 0x01, 0xB1, 0xBA};
    SerialPort _Port = new SerialPort("COM1", 9600,Parity.None);
    _Port.Open();
    _Port.Write(vl_Buffer,0,8);
    _Port.Close();
    Bon évidement dans mon soft j'ai des tests etc... que j'ai pas mis ici...

    J'aimerais avant tout valider le fait que mes octets soient écris sur le port série... Ce qui n'est pas le cas pour l'instant... Pour la lecture, je verrais après.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    Bon on à encore tout repris depuis le début, avec un bête copier/coller d'un code sur MSDN (prêt à tout pour y faire fonctionner).

    Et là, bah s'est bien passé, émission réussie. On à ensuite reéssayé notre code, et là aussi ça fonctionne aussi.

    Donc y'a un mystère à élucider... Mais pour l'instant je confirme qu'avec le framework 2.0 et la classe SerialPort, ça fonctionne sous windows 98, Me, 2000 et XP.

    Par contre en 1.1 avec la librairie qu'on avait trouvé sur le net, ça ne fonctionne toujours pas. Donc solution : Portage en framework 2.0 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'écriture port série sous Win32
    Par jackk dans le forum Windows
    Réponses: 4
    Dernier message: 07/10/2014, 11h27
  2. problème avec un port série
    Par Invité dans le forum Composants
    Réponses: 7
    Dernier message: 15/03/2008, 23h05
  3. Réponses: 7
    Dernier message: 09/06/2006, 10h38
  4. Réception sur le port série sous DOS avec Borland V3.0
    Par jackyjacky dans le forum Autres éditeurs
    Réponses: 24
    Dernier message: 19/03/2004, 23h18
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo