Bonjour,
Java n'est pas un langage que je maîtrise très bien mais j'en ai besoin pour communiquer via un port Série avec une balance de Sartorius et un indicateur Midrics 2. En me basant sur un wiki de RXTX sur la communication avec un post série, j'en suis arrivé à ce code :
Rendu là, j'ignore totalement quoi faire pour réussir à lire le poids mesuré par la balance ou pour écrire sur le port série vers la balance. J'ignore actuellement si c'est en raison de mon peu de connaissance en la matière ou parce qu'il me manque d'information sur le mode de fonctionnement de l'interface de la balance. J'ai donc contacté le service technique de Sartorius et je lance ce billet en parallèle pour savoir si quelqu'un aurait une suggestion à me faire pour me permettre de débloquer. Je présume que, pour un développeur Java plus expérimenté, ce code parle beaucoup plus qu'à moi.
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
83
84
85
86
87
88 import gnu.io.CommPort; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class TwoWaySerialComm { public TwoWaySerialComm() { super(); } void connect(String portName) throws Exception { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); if(portIdentifier.isCurrentlyOwned()) System.out.println("Error: Port is currently in use"); else { CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000); if(commPort instanceof SerialPort) { SerialPort serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(57600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); serialPort.notifyOnDataAvailable(true); InputStream in = serialPort.getInputStream(); OutputStream out = serialPort.getOutputStream(); (new Thread(new SerialReader(in))).start(); (new Thread(new SerialWriter(out))).start(); } else System.out.println("Error: Only serial ports are handled by this example."); } } /** */ public static class SerialReader implements Runnable { InputStream in; public SerialReader(InputStream in) { this.in = in; } public void run() { byte[] buffer = new byte[1024]; int len = -1; try { while((len = this.in.read(buffer)) > -1) { System.out.print(new String(buffer,0,len)); } } catch ( IOException e ) { e.printStackTrace(); } } } /** */ public static class SerialWriter implements Runnable { OutputStream out; public SerialWriter(OutputStream out) { this.out = out; } public void run() { try { int c = 0; while(( c = System.in.read()) > -1) { this.out.write(c); } } catch(IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { try { (new TwoWaySerialComm()).connect("COM7"); } catch(Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Partager