Bonjour à tous,

Je suis sur un projet un peu particulier et c'est ces particularités qui me font vous écrire aujourd'hui :

Un appareil d'observation astronomique équipé d'une tête d'observation avec tout un système optique ramène les photons incidents vers une matrice de capteurs photosensibles ( 8lignes * 8colonnes = 64 capteurs). Et ces capteurs me rendent la valeurs à l'instant t. t étant l'instant où 1 des 64 capteurs capture un "événement", c'est à dire qu'un seuil a été dépasser sur au moins un capteur et donc on enregistre toute l'image que réalise notre matrice.

C'est la version ultra courte et j'espère que vous comprenez jusque là, de notre côté à nous informaticiens, on récupère un string avec 64 valeurs (souvent comprise entre 800 et 1500, pouvant aller jusqu'à 3000) séparées par des espaces. Premier détail, il peut y avoir un événement toutes les 20 nano secondes. C'est assez court. Et donc un tel string est créer au pire toutes les 20 ns. (64*4char + 63char = 319 caractères max)

Bref, je dois mettre sur l'écran de cet appareil, un rendu temps réel de ce qu'on observe. Mais également, faire un vrai programme tout autour, avec la barre de menu [Fichier][Edition][Affichage]... et une barre fixe en bas pour savoir le statut de la tête d'observation. Dans fichier, on peut créer un nouveau projet qui, quand on le lance, enregistre tous les événements pendant une durée déterminée par l'utilisateur. Jusque là, rien de bien sorcier me direz-vous.

Alors je suis parti sur du Windows Form en C#, faisant une interface permanente et en faisant en sorte qu'au centre de cette interface puisse s'inter-changer les "pages" comme sur Visual Studio. Une page d'accueil, quand on charge ou créer un projet, etc.

Et là on rentre dans le vrai problème. Vu que notre fréquence de modification des valeurs peut être toutes les 20 ns, il va falloir que je fasse en sorte que tout ce beau monde se synchronise au rendu dynamique qui doit juste représenter la valeur à un instant donné et PAS montrer à chaque frame, l’événement suivant de la matrice, car elle en a sûrement détecter plusieurs.

Si je ne suis pas clair ici, dites vous que je souligne le problème suivant : entre ma matrice qui va envoyer plusieurs image (par exemple on a eu 6 événements en 0.010s alors que l'écran lui ne s'actualise que toutes les 0.017s (et si il y a du lagg?). Il faut donc que je m'assure que tout est synchro (dans notre exemple il faudrait simplement afficher le 6ème événement).
Vous comprenez bien qu'on risque rapidement d'être submergé d'informations, il faut donc en plus que je rende ce rendu suffisamment light. Je suis donc parti sur du windows form et j'ai créer une "visionneuse" (un panel) dans lequel je mets un tableLayoutPanel et dedans, je mets 64 label qui se voient modifier leur valeur à chaque événement et je change également la couleur de fond du lanel de noir à blanc (noir = minimum, blanc = maximum) en passant par tous les dégradés de gris en fonction de la valeur. J'ai d'ailleurs un problème pour faire comprendre à mon tableLayoutPanel qu'il ne doit y avoir que 8 objets par ligne, en l'état il les affiche tous les un à la suite des autres et ça ne représente pas du tout ma matrice de 8x8.

Question : est-ce efficient? Je me doute que non, mais je pourrais passer par des panel ça reviendrait au même... Autre chose, je suis très médiocre en graphique, j'adore la programmation, mais je m'occupe rarement de faire les fenêtres et boutons.

Dans l'idée, je suppose qu'il faut que je créer véritablement l'objet visionneuse capable de se redimensionner automatiquement en affichant systématiquement les 64 cases. Mais je n'ai aucune idée de comment faire une telle chose, de quoi mon objet doit hérité? Et donc comment le synchroniser également?

Je vais arrêter là pour les explications de mon projet, sachant que je suis bien perdu, ça ne doit pas être simple de savoir comment m'aider pour vous . Je suis dispo pour la moindre question ou idée.

Bien à vous amis programmeurs.