[Port] dialogue entre 2 RS485
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:
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 :
Code:
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) ;
}
}
}
} |
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 8O ...
Si vous avait une idée...
Merci, floanne.