Arret au bout d'un certain temps

gethy Messages postés 4 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 16 octobre 2007 - 16 oct. 2007 à 15:00
gethy Messages postés 4 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 16 octobre 2007 - 16 oct. 2007 à 16:38
Salut a tous.
Voila, j'ai un petit soucis.
J'ai creer un programme en java qui lit ce qui se passe sur un port serie.
Sur ce port est connecté un flasheur, qui envoie les informations a certains moments de la journee.
Ces informations sont recuelli dans un fichier txt qui est envoyé soit au bout de 30 flashages, soit au bout de 30 minutes d'inactivité.
Sauf que voila, J'ai le programme qui s'arrete au bout d'1h30/2h malgres la boucle infini que j'ai mis.
Est ce normal?

2 réponses

The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
16 oct. 2007 à 15:22
Bonjour,

C'est pas normal qu'un programme qui est censé tourner à l'infini s'arrête au bout d'1h30/2h
_ maintenant, il y a certainement une erreur dans la programmation (ou un autre phénomène)
_ pourrais-tu coller le bout de ton code avec la boucle infini et la lecture ?

=

Une autruche ne se cuit pas aux petits lardons
0
gethy Messages postés 4 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 16 octobre 2007
16 oct. 2007 à 16:38
Voila mon code :

debutducode------------------------------------------------------------------------------------------
   while(true)
   {
       int i=0;
       String NomFile=com+"-"+dat+hour+min+sec+milsec;
       System.out.println("Nouveau fichier txt créé : "+NomFile);
       FileWriter txt = null;
       String titretxt="C:/flasheur/txt/"+NomFile+".txt";
       txt = new FileWriter(titretxt);
       PrintWriter pretxt = new PrintWriter(txt);
       pretxt.flush();
       //Attente de 30 min (le temps est en ms)
       serialPort.enableReceiveTimeout(1800000);
       System.out.println(dat+hour+min+sec+milsec);
       try
       {
           do
           {
               //pour lire avec des streams:
               in=new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
               int amount;
               String c="";
               do
               {
                   amount = in.read();
                   c+=DecToChar(amount);
               }while(DecToChar(amount)!="ETX");
              System.out.println(c);
              if(c.length()==38)
              {
                  String barcode=c.substring(19, 27);
                  pretxt.println("BARCODE="+barcode+";DATETIME="+dat+hour2+min2+sec2+milsec2);
                  pretxt.flush();
                  i++;
              }
              if(i==30)
              {
                  ok=false;
              }
              if(c.compareTo("STXCLOTURE_HILLSETX")==0)
              {
                  System.out.println("CLOTURE DE LA JOURNEE");
                  ok=false;
               }
            }while(ok);
            pretxt.close();
            System.out.println("Nouveau fichier BOUCHON créé : "+NomFile);
            FileWriter bch = null;
            String titrebch="C:/flasheur/txt/"+NomFile+".bouchon";
            bch = new FileWriter(titrebch);
            PrintWriter prebch = new PrintWriter(bch);
            prebch.flush();
            prebch.close();
            envoieFTP(NomFile);
            Properties sys = System.getProperties();
            String os = sys.getProperty("os.name");
            Runtime r = Runtime.getRuntime();
            try
           {
               r.exec("C:/flasheur/start.bat");
           }
           catch (IOException ex)
           {
               ex.printStackTrace();
           } 
           in.close();
       }
       catch(Exception f)
       {
           System.out.println("----Nouveau fichier BOUCHON créé : "+NomFile);
           FileWriter bch = null;
           String titrebch="C:/flasheur/txt/"+NomFile+".bouchon";
           bch = new FileWriter(titrebch);
           PrintWriter prebch = new PrintWriter(bch);
           prebch.flush();
           prebch.close();
           envoieFTP(NomFile);
       }
     }
  }
  catch (Exception e)
  {
      e.printStackTrace();
  }
finducode-----------------------------------------------------------------------------------------------

Une petite question :
J'ai fais en sorte que le programme se lance au lancement d'une session windows grace à un .bat.
Ma question est : Apres verrouillage de la session, quand on se reconnecte a celle-ci, l'invite de cimmande est toujours presente mais le programme cess-t-il de fonctionner ?
0
Rejoignez-nous