Bonjour à tous,

je réalise des programmes de communication série entre 2 PC, dans un de ceux-ci j'envoie juste l'heure à l'autre pc.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include  "a:\Uart.C"
#define  ECHAP  27
#define	 XON	17
#define	 XOFF	19
 
void main (void)
{
   int Precedent, RecoitCommande, Commande = XON ;
   struct time t;
   char String[3] ;
 
 
   clrscr() ;                          
   ConfigSerie (COM1, 4800, 8, 0);        /*Configuration du port*/
   outportb (COM1+4, inportb(COM1+4) &~ 0x10); /*comm ente les 2 pcs*/
 
   gettime(&t) ;                          /*Recuperation de l'heure*/
   Precedent = t.ti_sec ;        /*Sauvegarde des secondes*/
 
   do
   {
 
       while (!kbhit())
       {
	  if ((RecoitCommande = RecoitChar(COM1)) != -1)
	     Commande = RecoitCommande ;
	  //si c'est marche on envoie l'heure
	  if (Commande == XON)
	  {    while (t.ti_sec == Precedent) /*tant que l'heure change pas*/
		   gettime(&t) ;  //recuperation de l'heure
 
	       if (t.ti_hour <= 9)
	       {
		  String[0] = '0' ;
		  itoa(t.ti_hour, String + 1, 10) ; /*convertion entier en string*/
	       }
	       else
		  itoa(t.ti_hour, String, 10) ;
	       while (!EmetChar(COM1,String[0]));
	       while (!EmetChar(COM1,String[1]));
 
	       while (!EmetChar(COM1,':'));
 
	       if (t.ti_min <= 9)
	       {
		  String[0] = '0' ;
		  itoa(t.ti_min, String + 1, 10) ;
	       }
	       else
		  itoa(t.ti_min, String, 10) ;
	       while (!EmetChar(COM1,String[0]));
	       while (!EmetChar(COM1,String[1]));
 
	       while (!EmetChar(COM1,':'));
 
	       if (t.ti_sec <= 9)
	       {
		  String[0] = '0' ;
		  itoa(t.ti_sec, String + 1, 10) ;
	       }
	       else
		  itoa(t.ti_sec, String, 10) ;
	       while (!EmetChar(COM1,String[0]));
	       while (!EmetChar(COM1,String[1]));
 
	       Precedent = t.ti_sec ;
	  }
 
       }
  }
   while (getch() != ECHAP);
}
comme vous pouvez voir dans ce code j'envoie l'heure sous la forme suivante hh : mm : ss

Mon prog marche jusqu'à hh : mm : 58 en fait dès que les secondes passent de 58 à 59 ça ne marche plus.

Je sais d'où vient le problème, il provient de l'envoi du caractère " : " (58 ASCII) qui crée un décalage de mon horloge. Mais je n'ai aucune idée sur la façon de le corriger

Merci pour votre attention, Jean