Bonjour,
mon but est de faire dialoger mon programme avec un autre programme via une RS485.
Disposant de 2 port RS485 sur mon PC j'ai écrit un petit prog pour faire un teste.
voici le code de la classe de mon programme principale :
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 package communication; import gnu.io.* ; import java.io.* ; import java.lang.Thread ; public class BalanceTeste extends Thread { private RXTXPort port ; private RXTXCommDriver portDriver ; private BufferedInputStream in ; private BufferedOutputStream out ; /** Creates a new instance of BalanceTeste */ public BalanceTeste() { try { port = new RXTXPort ("COM3") ; port.setSerialPortParams( 9600, // baudrate 8, // databits 2, // stopbits 0 // parity ) ; in = new BufferedInputStream(port.getInputStream()) ; out = new BufferedOutputStream(port.getOutputStream()) ; } catch (PortInUseException ePortInUse) { System.err.println("communication, BalanceTeste," + " construction : " + ePortInUse) ; } catch (UnsupportedCommOperationException eUnsuported) { System.err.println("communication, BalanceTeste," + " construction : " + eUnsuported) ; } } public void run () { byte[] b = new byte[4] ; String s ; while (true) { try { System.out.println("avant le read") ; in.read(b) ; s = new String (b) ; System.out.println("apres le read b = " + s + " (" + b + ")") ; } catch (IOException e) { System.err.println("communication, " + "BalanceTeste, run : " + e) ; } } } }
et voici le code de la classe de mon prod de teste :
le problème est que le premier devrait recevoir la chaine "0D0A" envoyé par le deuxième mais ce n'est pas le cas : il resoit a interva régulier quelque chose qui est transcrit par 4 carre... que le prog de teste soit lancé ou non
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 import gnu.io.* ; import java.io.* ; import java.lang.Thread ; /** * * @author Florent Ruyssen */ public class Comm { private RXTXPort port ; private RXTXCommDriver portDriver ; private BufferedInputStream in ; private BufferedOutputStream out ; /** Creates a new instance of Comm */ public Comm() { try { port = new RXTXPort ("COM4") ; port.setSerialPortParams( 9600, // baudrate 8, // databits 2, // stopbits 0 // parity ) ; in = new BufferedInputStream(port.getInputStream()) ; out = new BufferedOutputStream(port.getOutputStream()) ; } catch (PortInUseException ePortInUse) { System.err.println("communication, BalancePrecia," + " construction : " + ePortInUse) ; } catch (UnsupportedCommOperationException eUnsuported) { System.err.println("communication, BalancePrecia," + " construction : " + eUnsuported) ; } } public void run () { byte[] b = new byte[49] ; String s ; while (true) { try { out.write("0D0A".getBytes()); System.out.println(new String ("0D0A".getBytes())) ; System.out.println("avant le read") ; in.read(b) ; s = new String(b) ; System.out.println("apres le read b = " + s) ; } catch (IOException e) { System.err.println("communication, " + "BalancePrecia, run : " + e) ; } } } }...
Si vous avait une idée...
Merci, floanne.
Partager