Bonjour à tous,

je suis en train d'essayer le tutorial pour lire le port sérial.
Mon but est le suivant:

j'ai une station météo de marque Vaisala type WXT520.
avec le code suivant, j'arrive à savoir que le port COM1 est utilisé.
mais je n'arrive pas à voir la trame que la station envoie.

En même temps si je me connecte par Hyper Terminal, mon code dit que le port est utilisé par une appilcation Windows.
ce qui est logique.

comment faire pour récupérer la trame de ma station météo?

Merci

voici le code:

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
import java.io.*;
import java.util.*;
import javax.comm.*;
import com.sun.comm.Win32Driver;
import com.sun.comm.Win32Driver;
 
public class SimpleRead implements Runnable, Seriai lPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration portList;
 
    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;
 
    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();
 
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                 if (portId.getName().equals("COM1")) {
			//                if (portId.getName().equals("/dev/term/a")) {
                    SimpleRead reader = new SimpleRead();
                }
            }
        }
    }
 
    public SimpleRead() {
        try {
            serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
        } catch (PortInUseException e) {System.out.println(e);}
        try {
            inputStream = serialPort.getInputStream();
        } catch (IOException e) {System.out.println(e);}
	try {
            serialPort.addEventListener(this);
	} catch (TooManyListenersException e) {System.out.println(e);}
        serialPort.notifyOnDataAvailable(true);
        try {
            serialPort.setSerialPortParams(9600,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {System.out.println(e);}
        readThread = new Thread(this);
        readThread.start();
    }
 
    public void run() {
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {System.out.println(e);}
    }
 
    public void serialEvent(SerialPortEvent event) {
        switch(event.getEventType()) {
        case SerialPortEvent.BI:
        case SerialPortEvent.OE:
        case SerialPortEvent.FE:
        case SerialPortEvent.PE:
        case SerialPortEvent.CD:
        case SerialPortEvent.CTS:
        case SerialPortEvent.DSR:
        case SerialPortEvent.RI:
        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
            break;
        case SerialPortEvent.DATA_AVAILABLE:
            byte[] readBuffer = new byte[20];
 
            try {
                while (inputStream.available() > 0) {
                    int numBytes = inputStream.read(readBuffer);
                }
                System.out.print(new String(readBuffer));
            } catch (IOException e) {System.out.println(e);}
            break;
        }
    }
}