dedebatou
Messages postés13Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention13 septembre 2007
-
18 août 2003 à 16:19
dedebatou
Messages postés13Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention13 septembre 2007
-
18 août 2003 à 17:31
J'ai une application que j'ai dévellopée en VB5 et qui doit tourner 24h/24. Elle est constituée en particulier de deux exécutables qui se partagent un port COM (Rs232) du PC de façon pseudo aléatoire environ toute les 3 secondes pour une durée de communication via le port COM de quelques millisecondes.
Le problème : Au bout de quelques heures j'ai l'écran bleu avec écrit:
"***STOP: 0*00000077(0*C000000E,0*C000000E,0*00000000,0*00174000)
KERNEL-STACK-INPAGE-ERROR
Debut du vidage de la memoire physique"
Je travail sous windows NT.
Si quelqu'un a une explication et/ou une solution ce serait tres sympa, parce que moi je demissionne...
sylric
Messages postés91Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention22 août 2003 18 août 2003 à 16:55
Tout d'abord, le terme de partager un COM entre deux applications me paraît bizarre, normalement un COM ne peut être utilisé que par une seule application à la fois, ou alors il faut que chaque appli le referme à tour de rôle, mais ca me paraît très risqué car il faut, dans ce cas, synchroniser les deux appli, et comment, je sais pas ?
Deuxièmement, je ne sais pas comment tu adresse le port RS232, mais avec windows NT et/ou XP il me semble qu'il faille passer uniquement par le controle MSComm : si tu utilise directement l'adresse mémoire du port, ça ne marche pas ou très difficilement. Et le message que tu obtient ressemble à une erreur d'adressage.
Dans le cas ou tu peux, je te conseil déjà d'essayer les executables un par un (mais je pense que tu as essayé).
J'espère que ça te donnera au moins un début d'idée nouvelle.
dedebatou
Messages postés13Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention13 septembre 2007 18 août 2003 à 17:31
Pour ce qui est du partage du port com, je fais une gestion d'erreur qui met en attente le programme 100ms si le port est déjà ouvert par l'autre programme, puis retente de l'ouvrir.
Pour ce qui est de l'adressage du port, je n'utilise que MSComm.
Et j'ai bien entendu fais tourner les programmes indépendament.
Mon système marche mais il y a quelque chose qui sature la mémoire et qui est transparent dans le programme...