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 :
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 void main () { pic_init(); RS232_init(1, 0, 0); while(1) { for (i=0; i < 256; i++) { RS232_send(i); Delay_ms(10); } } }
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
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 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 ?
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; }
Voila ce que j'obtiens à la place des bonnes données :
Je comprend plus rien Enfin peut être que ça merde juste en software avec toute ces émulations, et que ça marchera en hardware
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
Partager