hello,
Je suppose que toutes ces recettes rentrent dans la SDRAM de l'IHM (1600 recettes x 400 ingrédients, ça fait du monde)
Je suppose aussi que le temps d'attente pour la recherche n'est pas une grosse contrainte (je parle de 30 secondes mais pas de 5 minutes)
C’est pour cette raison que on veut les charger d’abord dans un tableau et faire la recherche dans ce tableau
le tableau de hachage c'est pour gagner du temps au prix de beaucoup compliquer la programmation et de consommer de la mémoire
il faut l'initialiser, le mettre à jour à chaque changement de recette ...
donc ok, c'est presque une recherche instantanée mais il faut déjà bien connaître le matos et le java
il faut aussi gérer le risque de collision des codes de hachage
le temps n'est pas trop une contrainte, donc il faut déjà y aller le plus simplement possible
c'est à dire, balayer chaque recette, une par une, jusqu'à trouver l'étiquette recherchée
Dans un Script, on ne peut pas dans le même tour de cycle sélectionner une recette et lire son contenu, on aura le contenu de la recette sélectionnée que au tour de cycle suivant, de ce fait on ne peut pas faire une boucle qui lirait toutes les recettes dans le même tour de cycle.
c'est une programmation asynchrone
qui se fait en 2 temps :
1 - la requête
2 - le traitement du résultat
j'avais fais des essais à l'époque d'un script sur évènement :
viewtopic.php?f=21&t=143
l'idée est la suivante :
avoir un script qui se déclenche lors de l'évènement "données de la recette disponible"
ce script traite les données (dans ton cas, comparer l'étiquette)
et éventuellement il relance la requête de lecture de la recette suivante (un compteur à incrémenter) --> ce qui déclenchera à nouveau ce script et ainsi de suite ...
il ne manque juste que l'amorce (la 1ère requête) qui doit se déclencher sur l'appui du bouton "Rechercher" par exemple
dans ce cas, tu auras le meilleur temps possible pour la recherche car tu n'es pas cadencé par une tempo mais par un évènement
le script qui se déclenche sur évènement fonctionnait bien (voir le lien, surtout le dernier message)
déjà pour simplifier tu peux écrire ceci :
8 groupes de 200 recettes
une recette est indexée par un numéro unique de 0 à 1599 de façon à ce que :
groupe = (indice / 200) + 1 ; les groupes sont numérotés à partir de 1 il me semble
recette = (indice % 200) + 1; les recettes sont numérotées à partir de 1 il me semble -- % = opérateur modulo
tu n'auras donc qu'un seul compteur à gérer
j'ai aussi pour habitude d'occuper le volume même si les recettes ne sont pas utilisées (tu n'as aucun moyen de savoir par programme combien il y a de recettes par groupe) et d'avoir donc un volume fixe (et non dynamique). il te faut aussi un petit script (sur ton PC pas sur Vijeo) pour générer 1600 recettes selon un modèle par défaut, justement pour occuper ce volume.
pendant la recherche (qui va durer X secondes), il ne faut pas que l'utilisateur puisse naviguer dans les recettes ; il faut gérer ce risque de collision par un verrouillage.
@+