Deux threads à contrôler en même temps...

darkcloud65498 Messages postés 1 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 22 novembre 2009 - 22 nov. 2009 à 13:58
pyo656 Messages postés 34 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 19 février 2010 - 15 janv. 2010 à 20:29
Bonjour à tous,

je dois faire un projet en groupe, où l'on doit simuler en java le comportement d'une imprimante multifonctions. On doit donc simuler l'impression des pages, le scan, ... Tout ça grâce au multithreading. Il y en a plusieurs(des threads) : une pour le scan, pour l'impression, pour l'accès aux cartes mémoires (dans l'éventualité où il y en aurait), et un thread par PC connecté à l'imprimante.

C'est là que ça se complique. Car le terminal affichera l'écran de l'imprimante (un menu avec "afficher les photos", "scanner et sauver sur la carte mémoire", "imprimer à partir de la carte mémoire", ...). Or il faudrait aussi pouvoir rajouter dans le tableau des tâches à accomplir les tâches que les threads "PC" enverront à l'imprimante. Du coup je dois contrôler l'écran de l'imprimante et les "PC" en même temps, et ça c'est pas possible car il n'y a qu'un seul terminal...

J'ai pensé à faire une liaison socket entre les threads PC et le reste de telle manière à avoir deux terminaux, mais je trouve que ça serait fort compliqué et je suis pas sûr que ce soit le but du projet. Après j'ai pensé à une bonne vieille fonction getkey comme sur les calculettes (dès que j'appuie sur une touche bien particulière, on considèrera que je veux faire un scan à partir du "PC")...

Quelqu'un a une idée ?

Merci d'avance.

1 réponse

pyo656 Messages postés 34 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 19 février 2010
15 janv. 2010 à 20:29
Je n'ai peut-être pas bien compris mais il me semble que ton terminal ne fait qu'afficher les données de l'imprimante et que ce n'est qu'avec les PC que tu modifies les actions à faire.

Tu pourrais "bêtement" faire quelque chose du style dans ta méthode main :

public static void main(String[] args)
{
 // initialisations du programme etc

 
 while(true)
 { 
   Scanner sc = new Scanner(System.in);

   System.out.println("Affichages des infos de l'imprimante :");
   // blablabla
   System.out.println("Quel PC voulez-vous utiliser ?");
   String str = sc.nextLine();
   // Si l'utilisateur a rentré 1 : threadPc1, 2 : threadPc2, etc.

   System.out.println("Quelle action voulez-vous faire ?"); 
   // Si l'utilisateur a rentré "imprimer" : méthode imprimer du threadPcX (X num du pc)

   // etc etc
 }
}


Mais je n'ai peut-être pas très bien compris ton problème ... ?


Pyo
0
Rejoignez-nous