Environnement: WinXP; PowerBuilder 11.5 (bien que probablement pas pertinent parce que cette partie est presque entièrement des appels WinAPI)Le port COM ne fonctionne plus
Mon application ouvre un port COM pour l'écriture en utilisant des appels de méthode chevauchés. Le port est ouvert lorsque l'application est ouverte. L'application laisse le port ouvert à tout moment.
Parfois, le périphérique connecté cesse de recevoir des données même si l'application envoie toujours des données. L'application ne reçoit aucun message d'erreur. L'arrêt et le redémarrage de l'application ne le résolvent pas. Le redémarrage de l'ordinateur ne le résout pas. Cependant, la connexion via hyperterminal le corrige.
Cet appareil particulier imprime des étiquettes de codes à barres. L'application sera très bien imprimée, puis soudainement, il ne sera pas imprimé. Fermez l'application ouvrir et se connecter avec hyperterminal; déconnecter et fermer l'hyperterminal; ouvrez l'application Cela fonctionne très bien encore ... pendant un moment. (J'ai eu des problèmes similaires avec d'autres périphériques qui communiquent également via le port COM, donc je sais que ce n'est pas le périphérique lui-même.)
Le problème le plus proche que je peux trouver sur le web est à http://www.eggheadcafe.com/microsoft/Windows-XP-Hardware/30829577/com1-not-behaving.aspx qui parle de conflits d'IRQ et n'offre aucune solution. Je peux seulement deviner que mon problème est similaire.
Est-ce que quelqu'un sait ce que l'hyperterminal pourrait faire pour éclaircir les choses?
L'indicateur fort est que la poignée de main est incorrecte.Comme si vous n'utilisiez rien lorsque le périphérique nécessite RTS + CTS ou Xon/Xoff. –
C'est certainement une possibilité. Mais est-ce que quelque chose comme ça fonctionnerait de temps en temps? L'application fonctionne pendant un certain temps puis s'arrête soudainement. Aussi, comment devrais-je spécifier la méthode handshake lors de l'utilisation de la méthode CreateFile? http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx –
Vous le spécifiez dans le DCB avec SetCommState() –