Programme (RXTX)


Main.java
public class Main {
public static void main(String[] args) {
Accelerometre acc = new Accelerometre() ;
}
}

Accelerometre.java
import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener;
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.StringTokenizer;
import javax.swing.JButton; import javax.swing.JFrame;
public class Accelerometre implements SerialPortEventListener {
private SerialPort serialPort; private BufferedReader input; private JFrame jf ; private MonPanneau mp ; private JButton bouton ; private String s = "" ; private int x = 0 ; private int y = 0 ;
public Accelerometre() {
initialize(); jf = new JFrame("Accéléromètre") ; bouton = new JButton("Fermer"); bouton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { close() ; System.exit(0); } }); mp = new MonPanneau(); jf.setLayout(new BorderLayout()); jf.add(bouton, BorderLayout.NORTH); jf.add(mp, BorderLayout.CENTER); jf.setBounds(100, 100, 800, 600); jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); jf.setVisible(true);
}
public void initialize() {
CommPortIdentifier portId = null; Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); while (portEnum.hasMoreElements()) { CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement(); System.out.println(currPortId.getName()); if (currPortId.getName().equals("/dev/cu.usbserial-A8003LVg")) { portId = currPortId; break; } } try { serialPort = (SerialPort) portId.open(this.getClass().getName(), 2000); serialPort.setSerialPortParams(38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); input = new BufferedReader(new InputStreamReader(serialPort.getInputStream())) ; serialPort.notifyOnDataAvailable(true); serialPort.addEventListener(this);
} catch (Exception e) { System.err.println(e.toString()); }
}
public void close() {
if (serialPort != null) { serialPort.removeEventListener(); serialPort.close(); }
}
@Override public void serialEvent(SerialPortEvent event) {
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { s = input.readLine() ; s = input.readLine() ; StringTokenizer st = new StringTokenizer(s) ; x = Integer.parseInt(st.nextToken()) ; y = Integer.parseInt(st.nextToken()) ; /*System.out.println("X = "+x); System.out.println("Y = "+y); System.out.println("Z = "+z); System.out.println("-----------------");*/ mp.maj(x, y); } catch (Exception e) {}
}
}
}

MonPanneau.java
import java.awt.Color; import java.awt.Graphics;
import javax.swing.JPanel;
public class MonPanneau extends JPanel {
private double x ; private double y ; private int dx = 100 ; private int dy = 200 ; private int r = 150 ; private int b = 5 ;
public MonPanneau() {
super(); this.setBackground(Color.black);
}
public void paintComponent(Graphics g) {
super.paintComponent(g); r = (int)( 150 * Math.cos(y)); g.setColor(Color.DARK_GRAY); for(int i=0; i<1000; i+=50) { g.drawLine(0, i, 1000, i); g.drawLine(i, 0, i, 1000); }
Color c = new Color(0,150,150,r); g.setColor(c); g.fillOval(500, 50, 30, 30);
c = new Color(200,150,230,50); g.setColor(c); g.fillOval(dx, dy-r, r*2, r*2);
g.setColor(Color.DARK_GRAY); g.drawOval(dx, dy-r, r*2, r*2); g.setColor(Color.orange); g.drawString("r = "+r, 500, 100); g.drawString("alpha1 = "+x, 500, 130); g.drawString("alpha2 = "+y, 500, 160);
g.setColor(Color.red);
int a1 = (int)((dx+r)-Math.cos(x)*r)-b ; int b1 = (int)(dy+Math.sin(x)*r)-b ; g.fillOval(a1, b1, b*2,b*2); int a2 = (int)((dx+r)+Math.cos(x)*r)-b ; int b2 = (int)(dy-Math.sin(x)*r)-b ; g.fillOval(a2, b2, b*2,b*2); g.drawLine(a1+b,b1+b,a2+b,b2+b);
}
public void maj(int x, int y) {
this.x = ((double)x)/752.0 ; this.y = ((double)y)/752.0 ; repaint() ;
}
}

|