L'ordinateur plante quand un programme tourne plus de 10 minutes

Résolu
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011 - 10 juil. 2011 à 16:39
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011 - 15 juil. 2011 à 15:25
bonjour,
je suis en train de concevoir un programme qui enregistre des nombre sur un site internet en continu (par reconnaissance graphique avec la fonction getpixel); il semble fonctionner, mais au bout de 5 à 15 minutes de fonctionnement, l'ordinateur plante totalement, et un ecran noir apparait. J'ai vérifié des centaines de fois, il ne semble pourtant pas y avoir de bug dans mon programme.
J'aimerais savoir à quoi cela est du, et comment je pourrais corriger ce problème svp
merci d'avance!

31 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 juil. 2011 à 13:11
on ne voit pas dans ton code :
- ni où tu utilises GetDc
- ni où se trouve cette ligne qui m'inquiète beaucoup :
couleur=getpixel(getDC(0),x, y)

car elle tend à signifier que tu utilises sans cesse getdc, pour chaque coordonnée de ton écran!
Il n'y aurait alors pas lieu de s'étonner d'une sur-sollicitation !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 juil. 2011 à 14:50
Je dois faire comment alors??

Tu me vois assez gêné de répondre à ta question, car une réponse va te donner l'impression de ce que je "bénis" le mécanisme choisi, ce qui est très loin d'être le cas (voir ce que je t'ai dit plus haut à ce propos).
Je vais nonobstant (et sans "bénédiction") te répondre ainsi.
Tu veux traiter les pixels d'un hdc ? Celui de la totalité de ton écran ?
Vpoici le principe :
Dim tonhdc as long
tonhdc = GetDc(0)
' et ton traitement ici (exemple):
For x =  1 to la_largeur_de_tonhdc
  For y =  1 to la_hauteur_de_tonhdc
    couleur=getpixel(tonhdc,x, y)
    '... et tu traites sur ces couleurs, selon ce que tu veux traiter
    '...
  Next
Next
' ça y est ? tu en a fini avec ce tonhdc ? ===>>
delete tonhdc

Voilà le principe, en respectant TA volonté d'un mécanisme que je n'approuve cependant point, comme dit plus haut.
Voilà !
Ce que je pense en réalité, maintenant ===>>
La détermination de la cause de ton écran noir (faiblesse et mise en grêve de ta carte graphique), objet de la discussion, a été faite === >> Ce problème isolé est résolu.

Tu as par ailleurs (quelle que soit la force de ta carte graphique) un autre problème (celui d'une sur-sollicitation en raison d'une stratégie mal pensée) ===>> tu as là une première réponse, mais elle n'est pas celle d'une amélioration de stratégie. Elle n'est que la conservation de la tienne, mais en lui appliquant plus de sagesse (c'est tout).
Ce que je te conseille : ===>> ouvrir une autre discussion destinée à plus de réelle économie, du genre :
=>> "comment ne traiter qu'une partie graphique de mon écran ?"
J'entends par là, par exemple : ne traiter que le quart (en précisant lequel) de ton écran. et ne garder, pour y travailler, que cette partie d'écran ===> gain énorme de vitesse + économie de ressources diverses.
Je t'avais par ailleurs parlé de l'utilisation d'un DIB, mais constate que tu préfères l'éviter ===>> Qu'à cela ne tienne ===>> on peut faire sans DIB mais, au moins, ne traiter que la portion à traiter.
Voilà


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 juil. 2011 à 17:03
Bonjour,

Comment fais-tu ta reconnaissance, y-aurait-il pas un problème de non libération des handles ?

Mon site
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 17:24
Bonjour,

Ce qui m'inquiète, c'est ceci :
et un ecran noir apparait

qui me fait penser à une surchauffe du processeur ===>> coupure électrique alors nette pour protéger le PC
Questions, alors :
- Quand tu dis "un écran noir apparait" : seulement un écran noir (PC continuant à tourner) ou également arrêt complet du PC ?
- Comment est conduite cette opération :
un programme qui enregistre des nombre sur un site internet en continu

- par l'intermédiaire d'un contrôle Timer ? (et avec quelle fréquence ?)
- ou autrement et avec des Doevents ?
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 17:33
A ne pas écarter non plus l'hypothèse d'une surchauffe de la carte graphique

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011
10 juil. 2011 à 17:51
alors non le pc ne s'éteint jamais, il planbte, et l'écran noir apparait aussitot que je fais une manipulation quelquonque(touche/souris).
je n'utilis epas de timer ni do event, le programme analyse juste les chiffre suivant jusqu'en bas de la page, puis change de page. cela marche très bien au début, puis au bout d'un certain temps, le pc plante, alors que le cheminement est tjs exactement le même.
ce pourrait être la carte graphique? il s'agit de page totalement statiques, sans problème d'affichage particulier
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 17:56
Si le pc ne s'éteint pas (et qu'il est construit avec ce type de protection... sinon : doute...) reste l'hypothèse de la surchauffe de la carte graphique
le programme analyse juste les chiffre suivant jusqu'en bas de la page, puis change de page

Il faut bien qu'il soit constamment "aux aguets" pour ce faire, non ? Quelle méthode utilises-tu pour cela ?
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 18:16
Au fait ===>> une question que j'ai oublié de poser :
Quelle carte graphique as-tu ? ===>> si nvidia (au hasard et très "innocemment" ): quelle série ?


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 18:21
Autre chose :
Fais ce petit essai :
- lancer de la musique (depuis un répertoire de ton PC plutôt que depuis un lecteur DVD)
- lancer ton appli

Nous dire si quand écran noir, tu continues ou non à entendre la musique.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 18:31
Et j'ai oublié une autre hypothèse, même si moins probable : surchauffe d'une barrette de mémoire (qui cesse alors son travail illico-presto)

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011
10 juil. 2011 à 20:46
alors, effectivement, pour fonctionner, il faut que la page internet ait constamment le focus, et que le pc ne soit pas en veille, pour ça, c'est simple, le programme fait bouger et cliquer la souri pour changer d epage en moyenne toute les deux minutes, ainsi le programme peut travailler constamment. J'ai fait le petit test avec la musique, et en fait, le son fonctionne toujours quand le pc plante, dois-je en déduire que c'est un problème de carte graphique?? d'ailleurs je ne sais pas quelle carte j'ai, c'est un vieux pc hp qui a 4 ans, et l'étiquette s'est décollé.
ah et j'aurais du préciser qu'il s'agit d'un portable... et malheureusement, je n'ai pas d'autre pc à disposition pour tester mon programme dessus; ce genre d'application demande vraiment bcp de ressource?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 21:11
J'ai fait le petit test avec la musique, et en fait, le son fonctionne toujours quand le pc plante, dois-je en déduire que c'est un problème de carte graphique??

Ben ... très probablement oui .

D'ailleurs je ne sais pas quelle carte j'ai

Ben ... Poste de travail ===>> Afficher les Informations Système ====>>> Matériel ==>> Gestion des périphériques ===>>> un clic sur le "+" (pour développer) de Cartes Graphiques ===>> tu lis !

ah et j'aurais du préciser qu'il s'agit d'un portable

L'aération des éléments d'un portable est en effet toujours plus difficile. Quand l'as-tu nettoyé ou fait nettoyer la dernière fois ? Et ...
- Fumes-tu ?
- Remarques-tu des différences de comportement en fonction de la température ambiante ?

il faut que la page internet ait constamment le focus, et que le pc ne soit pas en veille, pour ça, c'est simple, le programme fait bouger et cliquer la souri pour changer d e page en moyenne toute les deux minutes, ainsi le programme peut travailler constamment

Il y a donc forcément utilisation d'un Timer ou d'un mécanisme similaire ! Lequel ? Tu n'as toujours pas répondu sur ce point !

Cela fait, comme tu le vois, beaucoup de choses ...
Premier conseil : faire nettoyer l'(intérieur de ton portable par un technicien (car tu m'a l'air peu enclin à t'en charger toi-même)
Deuxième conseil : Evite de développer des programmes "gourmands", surtout si tu n'es pas certain de bien gérer les fuites de ressources (>Relis déjà la réponse sage de NHenry).
Bonne chance
__________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2011 à 21:35
Et bien entendu (si ce rappel est vraiment nécessaire) : ne pose jamais, en utilisation, ton portable sur une surface non dure et non plane (genoux, lit, sofa, etc... sont à déconseiller)
Sois également conscient de ce qu'une fois qu'un ensemble "surchauffe", il commence à s'affaiblir pour diverses raisons. Même les ventilateurs (qui tournent alors pratiquement sans cesse) s'usent plus vite.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Utilisateur anonyme
10 juil. 2011 à 23:55
A mon avis c'est plus un problème de code.
Mais comme on n'a pas eu la chance d'avoir la moindre petite ligne à se mettre sous la dent, bonne chance pour la suite...
Tu peux quand même regarder la charge cpu ainsi que l'occupation mémoire pendant ces fameuses 5 minutes de pur bonheur avant que ta machine ne rende l'âme. Paix à elle.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2011 à 06:56
A mon avis c'est plus un problème de code.


Ce n'est pas le code, qui fait que l'écran devient noir, mais que le reste fonctionne encore !

Le code, par contre, peut contribuer à provoquer la surchauffe de la carte graphique si, en sursollicitant le CPU, ce dernier devient un "radiateur" qui rend plus difficile encore le refroidissement de la carte graphique. .

L'appli concernée sursollicite le cpu, mais également la carte graphique qui, probablement faible ou mal ventilée, se "met en grêve" la première.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2011 à 07:01
Pour tout dire, je suis à peu près certain de ce que le même "accident" arriverait sur cette machine en lançant par exemple une application dont le seul but serait de réactualiser en boucle le simple affichage d'une page de site.
Avec, donc, pour seul code, la simulation en boucle des touches nécessaires à la réactualisation.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2011 à 08:04
Enfin (et afin d'éviter que cette discussion ne tourne en autre chose) :

1) je cite une réponse du demandeur :
d'ailleurs je ne sais pas quelle carte j'ai, c'est un vieux pc hp qui a 4 ans

2) je cite une allusion "innocente" que
j'avais faite beaucoup plus haut :
Au fait ===>> une question que j'ai oublié de poser :
Quelle carte graphique as-tu ? ===>> si nvidia (au hasard et très "innocemment" ): quelle série ?

3) et j'invite à ouvrir CE LIEN

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011
11 juil. 2011 à 13:08
concernant la carte graphique, c'est une "mobil intel(R) 965 Express Chipset Familly".
Sinon, j'ai fait le test du rafraichissement d epage en continue, et ça n'a pas provoqué de bug.. je ne fume pas, mais effectivement le pc surchauffe en cas de temperature ambiante très élevées, parfois il s'éteint meme. c'est donc j'imagine finalement peut être un problème avec mon code? Je n'utilise pas de timer dans la procédure, le programme analyse tous les nombres de la page, ce qui lui prend en moyenne deux minutes, et immédiatement après avoir fini, change de page, donc je ne pense pas que le problème vienne de là. !!voici la partie du code qui réalise l'analyse graphique


Dim xlsapp As excel.Application 'lancement d'excel
Dim Xlsbook As excel.Workbook
Set xlsapp = New excel.Application
Set Xlsbook = xlsapp.Workbooks.Open("C:\Users\florent\Documents\visual.xlsx")

virgule = 0
nombre = 0
For a = 1 To 20 'recopie le fichier excel dans une matrice, plus rapide
For b = 1 To 40
matexcel(b, a) = Cells(b, a)
Next
Next
excel.Application.Quit

'LA HAUTEUR D'ANALYSE DOIT ETRE FAITE SUR LA MOYENNE HAUTE SUPERIEURE DES CHIFFRES
'les chiffres font généralement une dizaine de pixel de hauteur, 5 à 9 en largeur

modevirgule = 1 '1 si prise en compte des virgules activées, 0 sinon
ab = 20 'borne de balayage gauche
abc = 58 'borne d ebalayage droite
again:
c = 17 'hauteur d'analyse

'procédure de reperage des chiffres
For a = ab To abc 'balaye sur toute la largeur
couleur = GetPixel(Form1.hdc, a, c - 1)
couleur1 = GetPixel(Form1.hdc, a, c)   'analyse de largeur 3, pour éviter de passer à travers les pixel
couleur2 = GetPixel(Form1.hdc, a, c + 1)
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then GoTo suite 'si la ligne haute de l'analyse trouve un pixel noir, alors goto suite
rouge = Int(couleur1 Mod 256) 'extraction de la valeur rouge
vert = Int((couleur1 - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur1 - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then GoTo suite 'si la ligne centrale de l'analyse trouve un pixel noir, alors goto suite
rouge = Int(couleur2 Mod 256) 'extraction de la valeur rouge
vert = Int((couleur2 - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur2 - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then GoTo suite 'si la ligne basse de l'analyse trouve un pixel noir, alors goto suite
Next
GoTo fini 'si il n'y avait pas de chiffre sur la ligne d'analyse, on se dirige directement vers la procédure finale

suite: 'suite de l'analyse si un chiffre a été trouvé

'délimitation du chiffre par encadrement
d = 0
Do
e = 0
d = d + 1
For b = c - 4 To c + 7 'parcours vertical, l'etendue doit être modifiée selon la taille des chiffres
couleur = GetPixel(Form1.hdc, a - d, b) 'cherche la présence  ou non de pixel, pour l'encadrement
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then e = e + 1
Next
Loop Until e 0 Or d -8 'tolère jusqu'à 8 pixel à gauche du premier point d'analyse
vectcadre(1) = a - d + 1 'définit la borne gauche du cadre
d = 0
Do
e = 0
d = d + 1
For b = c - 4 To c + 7 'parcours vertical, l'etendue doit être modifiée selon la taille des chiffres
couleur = GetPixel(Form1.hdc, a + d, b) 'cherche la présence  ou non de pixel, pour l'encadrement
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then e = e + 1
Next
Loop Until e 0 Or a - vectcadre(1) + d 10 'accepte jusqu') 10 pixel à droite de la borne gauche
vectcadre(2) = a + d - 1 'définit la borne droite du cadre
d = 0
Do
e = 0
d = d + 1
For b = vectcadre(1) To vectcadre(2) 'parcours horizontalement, selon les limite gauche et droites du cadre
couleur = GetPixel(Form1.hdc, b, c - d) 'cherche la présence  ou non de pixel, pour l'encadrement
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then e = e + 1
Next
Loop Until e 0 Or d 6 'tolère jusqu'à 4 pixel en haut du point de hauteur d'analyse
vectcadre(3) = c - d + 1 'définit la borne haute du cadre
d = 0
Do
e = 0
d = d + 1
For b = vectcadre(1) To vectcadre(2) 'parcours horizontalement, selon les limite gauche et droites du cadre
couleur = GetPixel(Form1.hdc, b, c + d) 'cherche la présence  ou non de pixel, pour l'encadrement
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then e = e + 1
Next
Loop Until e 0 Or c - vectcadre(3) + d 10 'tolère jusqu'à 10 pixel en bas de la limite haute du cadre
vectcadre(4) = c + d - 1 'définit la borne haute du cadre

'enregistrement des pixel dans la matrice
For b = vectcadre(1) To vectcadre(2)
For d = vectcadre(3) To vectcadre(4)
couleur = GetPixel(Form1.hdc, b, d)
rouge = Int(couleur Mod 256) 'extraction de la valeur rouge
vert = Int((couleur - rouge) / 256 Mod 256) 'extraction de la valeur verte
bleu = Int((couleur - rouge) / 256 / 256) 'extraction de la valeur bleue
If rouge + vert + bleu < 300 Then
nbpoint = nbpoint + 1 'nombre de pixels
matcoord(1, nbpoint) = b
matcoord(2, nbpoint) = d
End If
Next
Next











'trace le cadre
For b = vectcadre(1) To vectcadre(2)
SetPixel Form1.hdc, b, vectcadre(3), black
Next
For b = vectcadre(1) To vectcadre(2)
SetPixel Form1.hdc, b, vectcadre(4), black
Next
For b = vectcadre(3) To vectcadre(4)
SetPixel Form1.hdc, vectcadre(1), b, black
Next
For b = vectcadre(3) To vectcadre(4)
SetPixel Form1.hdc, vectcadre(2), b, black
Next

'transformation en coordonée relative au bord gauche du cadre
For b = 1 To nbpoint
matcoord(1, b) = matcoord(1, b) - vectcadre(1)
matcoord(2, b) = matcoord(2, b) - vectcadre(3)
Next




'on cherche le chiffre le plus proche de la base de données
'ATTENTION, CA NE MARCHE QU'AVEC DES FIGURES RIGOUREUSEMENT IDENTIQUES
For a = 1 To 10
If nbpoint > matexcel(1, a * 2 - 1) Then b = matexcel(1, a * 2 - 1) 'cherche si il ya moins de pixel dans le chiffre observé ou le chiffre comparé
If nbpoint < matexcel(1, a * 2 - 1) Then b = nbpoint
If nbpoint matexcel(1, a * 2 - 1) Then b nbpoint
For c = 1 To b 'on compare tous les pixel du premier au dernier
'calcul de la distance avec pythagore
d = Sqr((matcoord(1, c) - matexcel(c + 1, a * 2 - 1)) ^ 2 + (matcoord(2, c) - matexcel(c + 1, a * 2)) ^ 2)
vectdist(a) = vectdist(a) + d
Next
vectdist(a) = vectdist(a) / b
Next




b = 10 'b est considéré ici comme le plus petit
For a = 1 To 10 'on cherche dans la vecteur quelle est la plus petite distance, qui correspondra au bon chiffre
If vectdist(a) < b Then
b = vectdist(a)
c = matexcel(1, a * 2)
End If
Next

'procédure de réinitialisation pour obtenir les chiffres suivant du nombre

nombre = nombre + 1
vectnombre(nombre) = c
ab = vectcadre(2) + 1
For a = 1 To 10
vectdist(a) = 0
Next
If nombre > 1 And vectcadre(1) - distvirgule > 3 Then 'si il ya a un ecart d eplus d edeux pixel entre les chiffres, on estime qu'il y a une virgule
virgule = nombre - 1 'on place la virgule juste après le précédent nombre
End If

distvirgule = vectcadre(2) 'enregistre le bord droit du cadre, pour pouvoir le comparer au bord gauche du prochain chiffre

For a = 1 To 4
vectcadre(a) = 0
Next
For a = 1 To 4
For b = 1 To 200000
matcoord(a, b) = 0
Next
Next
a = 0
b = 0
d = 0
e = 0
nbpoint = 0

GoTo again 'revient au point de départ


'procédure finale, transforme les différents chiffres en nombre
fini:
d = 0 'initialisation du nombre final
If nombre > 0 Then
For a = 1 To nombre
d = d + vectnombre(a) * 10 ^ (nombre - a)
Next
Else
d = "pas de nombre"
End If

If modevirgule = 1 And virgule > 0 Then
d = d / (10 ^ (nombre - virgule))
End If




le principe de cet algoritme est d'encadrer les nombres, enregistre les coordonnées des pixels du chiffre par rapport à ce cadre, compare à la base de donnée, et en déduit le chiffre, ce sont des chiffres dactylo donc le taux de reconnaissance juste est de 100%. Je ne sais pas du tout programmer de reconnaissance graphique par un réseau de neurone; mon système est-il trop gourmand et susceptible de faire planter le pc?
Enfin, je me demande, si j'arrive à faire un système qui marche, si un pc classique peut supporter de faire de l'analyse graphique en continue pendant 15h par jour, sans que j'ai besoin d'en acheter un nouveau tous les mois?

Merci d'avoir pris la peine de s'interesser à mon problème, c'est vraiment gentil
0
dieu360 Messages postés 30 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 10 septembre 2011
11 juil. 2011 à 13:09
ah et j'ai fait enlever la poussière de mon pc il ya un ans, pour cause de surchauffes trop frequentes
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 juil. 2011 à 14:40
Re...
puis-je te faire remarquer que le code que tu montres ici est celui de l'utilisation des pixels d'un seul objet Form (donc déjà peint) et n'a rien, en soi seul, à voir avec ;
je suis en train de concevoir un programme qui enregistre des nombre sur un site internet en continu (par reconnaissance graphique avec la fonction getpixel)

et encore moins avec :
alors, effectivement, pour fonctionner, il faut que la page internet ait constamment le focus, et que le pc ne soit pas en veille, pour ça, c'est simple,
le programme fait bouger et cliquer la souri pour changer d epage en moyenne toute les deux minutes


Et c'est cette seconde partie (dont on ne voit pas le code) qui fait nécessairement appel à l'utilisation d'un timer ou d'un mécanisme similaire ! C'est également elle qui sollicite le plus la carte graphique car j'imagine que c'est à cette occasion que tu "repeint" ton Form avant d'en traiter les pixels

Il est difficile de suivre ton code sans torticolis ! Il n'est pas indenté, d'une part, et, d'autre part, tes Goto en font un code spaghetti
Ce code n'est par ailleurs pas du VB.Net (la présente section) , mais du VB6.

Je vois bien ton "Goto Again" et ton étiquette "Again", mais ne vois pas du tout ce qui fait que, lors du "Again", ton Form1 serait différent de ce qu'il était précédemment.

Ce n'est en tout état de cause pas le code que tu nous montres qui est responsable de la "mise en grêve" de ta carte graphique (===>> écran noir mais processeur continuant, lui, son boulot).
Il pourrait tout au plus entraîner, si répété sans cesse, une sur-sollicitation et la surchauffe du processeur (et revoir alors ce que je disais plus haut du "radiateur" supplémentaire et de ses effets sur la température globale que va subir donc, par contre-coup, ta carte graphique)

Les "accidents" antérieurs de surchauffe de ton pc (que tu relates) tendent à conforter encore un peu plus l'hypothèse d'une faiblesse principalement matérielle (même si aggravée par des sur-sollicitations).
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous