Bonjour,

J'ai débuté la programmation d'une application sous Windows avec la librairie Javacomm pour communiquer sur une liaison série RS-232 avec mon PIC.
Pour l'instant je n'ai pas encore le câble série, ni de circuit pour adapter les sorties/entrés du PIC avec celle de la liaison RS-232 (MAX232) donc je ne fais que simuler sur mon PC. Pour cela j'ai installé Virtual Serial Port Driver qui me permet d'émuler deux port RS-232 liés virtuellement. Le programme du PIC est émulé sous Real Pic Simulator et est lié au port "COM2", quant à mon appli java, elle tourne sur le port "COM1".

Le programme du PIC envoie en boucle des données de 0 à 255 (0x00 à 0xff) toutes les 10ms :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
void main ()
{
     pic_init();
 
     RS232_init(1, 0, 0);
 
     while(1) {
          for (i=0; i < 256; i++) {
              RS232_send(i);
              Delay_ms(10);
           }
     }
}
Mon appli Java ne fait que réceptionner les données et les afficher dans la console :

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
//initialisation du driver	
		Win32Driver w32Driver= new Win32Driver();
		w32Driver.initialize();
 
		Rs232 flux = new Rs232("COM1", "Connection", 2400, 8, 0, 0);
 
		System.out.println(flux.toString());
 
		while(true) {
 
			System.out.println(flux.receive());
 
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
Le méthode receive :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public int receive() {
 
		int reponse = 256;
 
		try {
			reponse = this.bufRead.read();
			this.dataAvaible--;
 
		} catch (IOException e) {	
		}
 
		return reponse;
	}
Le problème est que je réceptionne bien tous les nombres, sauf de 128 à 159 inclus, soit de 10000000 à 10011111, le reste est parfait. Auriez vous une explication à ce problème ?

Voila ce que j'obtiens à la place des bonnes données :

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
124
125
126
127
8364
65533
8218
402
8222
8230
8224
8225
710
8240
352
8249
338
65533
381
65533
65533
8216
8217
8220
8221
8226
8211
8212
732
8482
353
8250
339
65533
382
376
160
161
162
163
164
Je comprend plus rien Enfin peut être que ça merde juste en software avec toute ces émulations, et que ça marchera en hardware