Bonjour,

J'ai recupere un petit programme Que j'execute sur un micro controller (ATMEGA 168).

Une partie de ce programme reste tres flou, qu'est ce que le behaviour similar to Unix stty ICRNL ???? j'ai tente une recherche sur google mais j'ai trouve tout et n'importe quoi....

Est ce que j'ai besoin de toute ces lignes de code ou est ce que je peux le simplifier ????

Merci

PS: Desole pour les accents, le clavier de mon PC est un QWERTY

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
77
78
79
80
81
82
 
//------------------------------------------------------------	
//behaviour similar to Unix stty ICRNL
//------------------------------------------------------------
 
	if (c == '\r')
	  c = '\n';
 
	if (c == '\n')
	  {
	    *cp = c;
	    uart_putchar(c, stream);
	    rxp = b;
	    break;
	  }
 
	else if (c == '\t')
	  	c = ' ';
 
	if ((c >= (uint8_t)' ' && c <= (uint8_t)'\x7e') || c >= (uint8_t)'\xa0')
	  {
	    if (cp == b + RX_BUFSIZE - 1)
	      uart_putchar('\a', stream);
 
	    else
	      {
		   	*cp++ = c;
			uart_putchar(c, stream);
	      }
 
	    continue;
	  }
 
	switch (c)
	  {
   	   	   case 'c' & 0x1f : return -1;
 
	  	   case '\b':
 
	  	   case '\x7f':
	   	   		 if (cp > b)
	      		 {
				  	uart_putchar('\b', stream);
					uart_putchar(' ', stream);
					uart_putchar('\b', stream);
					cp--;
	     		 }	 
		   break;
 
	  	   case 'r' & 0x1f:uart_putchar('\r', stream);
 
	       		for (cp2 = b; cp2 < cp; cp2++)
	      			uart_putchar(*cp2, stream);
           break;
 
	  	   case 'u' & 0x1f:
	       		while (cp > b)
	      		{
				 	uart_putchar('\b', stream);
					uart_putchar(' ', stream);
					uart_putchar('\b', stream);
						cp--;
	      		}
	       break;
 
	  	   case 'w' & 0x1f:
	       		while (cp > b && cp[-1] != ' ')
    		    {
			 	    uart_putchar('\b', stream);
					uart_putchar(' ', stream);
				  	uart_putchar('\b', stream);
					cp--;
   		        }
	       break;
	  }
  }
 
  c = *rxp++;
  if (c == '\n')
  rxp = 0;
  return c;
}