Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Medir temperatura ambiente com JavaFX e Arduino
- */
- package tempinofxb10;
- /**
- *
- * @author kml tina
- bem10jfx.blogspot.com
- */
- import java.util.Date;
- import javafx.application.Application;
- import javafx.application.Platform;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.Event;
- import javafx.event.EventHandler;
- import javafx.geometry.Orientation;
- import javafx.geometry.Pos;
- import javafx.geometry.Side;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.chart.CategoryAxis;
- import javafx.scene.chart.LineChart;
- import javafx.scene.chart.NumberAxis;
- import javafx.scene.chart.PieChart;
- import javafx.scene.chart.XYChart;
- import javafx.scene.control.Accordion;
- import javafx.scene.control.Button;
- import javafx.scene.control.CheckBox;
- import javafx.scene.control.ChoiceBox;
- import javafx.scene.control.ListView;
- import javafx.scene.control.Separator;
- import javafx.scene.control.Slider;
- import javafx.scene.control.TextArea;
- import javafx.scene.control.TextField;
- import javafx.scene.control.TitledPane;
- import javafx.scene.control.Tooltip;
- import javafx.scene.effect.Blend;
- import javafx.scene.effect.BlendMode;
- import javafx.scene.effect.Effect;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.layout.Background;
- import javafx.scene.layout.Border;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.scene.paint.Color;
- import javafx.scene.text.Text;
- import javafx.stage.Stage;
- import javafx.stage.WindowEvent;
- import jssc.SerialPort;
- import jssc.SerialPortEvent;
- import jssc.SerialPortEventListener;
- import jssc.SerialPortException;
- import jssc.SerialPortList;
- /**
- */
- public class TempInoFXb10 extends Application {
- String vlCode;
- String vlactions;
- Text lbaction = new Text("Ação: " + vlactions);
- Text lbcode = new Text("Temperatura" + vlCode);
- SerialPort serialport;
- String input;
- ChoiceBox cbport = new ChoiceBox();
- Scene scene;
- final NumberAxis axisY=new NumberAxis();
- final CategoryAxis axisX=new CategoryAxis();
- final LineChart <String,Number> lc =new LineChart<String,Number> (axisX, axisY);
- Button btsendposi=new Button("+");
- Button btsendnegativo=new Button("-");
- int vlsendPos=29;
- int vlsendNeg=1;
- TextArea taTerminalJFX=new TextArea();
- //new stagest
- Stage stageesta=new Stage();
- Group gpesta=new Group();
- Scene sceneesta =new Scene(gpesta, 300, 400,Color.ALICEBLUE);
- Button btest1=new Button("Estatisticas");
- String strdatas;
- //?
- XYChart.Series xychtdia=new XYChart.Series ();
- int contpieOne=0;
- //horas e logs
- Date dt=new Date();
- int odatas=dt.getHours()-1;
- Text txtimeini=new Text("Horario de Inicio "+""+odatas+":"+dt.getMinutes()+":"+dt.getSeconds()) ;
- Text txtimeatu=new Text("Atual "+odatas+":"+dt.getMinutes()+":"+dt.getSeconds());
- int contfrio=0;
- ObservableList<PieChart.Data>pieChartDatas1=
- FXCollections.observableArrayList(
- new PieChart.Data("Frio", 15),
- new PieChart.Data("Quente", 15)
- );
- PieChart pieChart1=new PieChart(pieChartDatas1);
- ObservableList<PieChart.Data>pieChartDatas2=
- FXCollections.observableArrayList(
- new PieChart.Data("1", 15)
- );
- PieChart pieChart2=new PieChart(pieChartDatas2);
- public void arranqdeconexao() {
- final String[] serialPortasNomes = SerialPortList.getPortNames();
- for (String nomeportas : serialPortasNomes) {
- cbport.getItems().addAll(nomeportas);
- System.out.println("iniciando comunicaçao de portas\n" + nomeportas);
- taTerminalJFX.appendText("iniciando comunicaçao de portas" + nomeportas+"\n" );
- }
- }
- @Override
- public void start(Stage stage) {
- Group gp = new Group();
- scene = new Scene(gp, 600, 500, Color.BLACK);
- stage.setTitle("sensor para medir temperaturas");
- stage.setScene(scene);
- String str_Carro_line="theme";
- // gp.getStylesheets().addAll("" + getClass().getResource(str_Carro_line+".css"));
- arranqdeconexao();
- lbaction.setText("Action : " + vlactions);
- lbcode.setText("Temperatura: " + vlCode);
- lc.setTitle("Temperatura Atual");
- xychtdia.setName("Diagrama");
- lc.setAnimated(true);
- lc.getData().addAll(xychtdia);
- lc.setPrefSize(300, 200);
- lc.setStyle("-fx-padding: 10;" +
- "-fx-border-style: solid inside;" +
- "-fx-border-width: 2;" +
- "-fx-border-insets: 0.5;" +
- "-fx-border-radius: 5;" +
- "-fx-border-color: orange;"+
- "-fx-background-color: White;");
- lc.setAlternativeRowFillVisible(true);
- Button btport = new Button("conectar");
- btport.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- btport.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btport.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btport.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btport.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- //vbcentral
- VBox vbox=new VBox();
- vbox.setStyle("-fx-padding: 2;" +
- "-fx-border-style: solid inside;" +
- "-fx-border-width: 2;" +
- "-fx-border-insets: 5;" +
- "-fx-border-radius: 5;" +
- "-fx-border-color: blue;"+
- "-fx-background-color: #B0C4DE;");
- HBox hb1=new HBox(5);
- VBox vb2=new VBox(10);
- VBox vb3=new VBox(10);//ajuste
- HBox hb1_1=new HBox(5);
- hb1.getChildren().addAll(vb2,hb1_1);
- vb2.getChildren().addAll(lbaction, lbcode);
- TextField tfMax, tfMin;
- Text txtemps=new Text("Ajuste de Temperatura:");
- tfMax=new TextField("");
- tfMax.setPromptText("MAX");
- tfMax.setPrefSize(40, 5);
- tfMin=new TextField();
- tfMin.setPromptText("MIN");
- tfMin.setPrefSize(40, 5);
- CheckBox cbxAuto= new CheckBox("Auto");
- cbxAuto.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- cbxAuto.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- cbxAuto.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- cbxAuto.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- cbxAuto.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- HBox hbvb3_1=new HBox(10);
- VBox vb4=new VBox(cbxAuto,new Separator(Orientation.HORIZONTAL),btest1);
- vb4.setSpacing(3);
- vb4.setAlignment(Pos.CENTER);
- hbvb3_1.getChildren().addAll(btsendposi,tfMax,btsendnegativo);
- vb3.getChildren().addAll(txtemps,hbvb3_1);
- hb1_1.getChildren().addAll(vb3,vb4);
- TextArea taTerminalAD=new TextArea();
- taTerminalAD.setPrefSize(scene.getWidth()-200, 100);
- TitledPane tl1terminalAD=new TitledPane("Terminal Arduino",taTerminalAD);
- Accordion accTerminalAD=new Accordion();
- accTerminalAD.getPanes().add(tl1terminalAD);
- btest1.setOnMouseClicked(new EventHandler<Event>() {
- @Override
- public void handle(Event event) {
- pbestatistica();
- }
- });
- btest1.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- btest1.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btest1.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btest1.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btest1.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- taTerminalJFX.setPrefSize(scene.getWidth()-200, 90);
- TitledPane tl1terminalJFX=new TitledPane("Terminal JAVAFX",taTerminalJFX);
- Accordion accTerminalJFX=new Accordion();
- accTerminalJFX.getPanes().add(tl1terminalJFX);
- accTerminalJFX.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- accTerminalJFX.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- accTerminalJFX.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- accTerminalJFX.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- accTerminalJFX.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- //binds
- vbox.layoutXProperty().bind(scene.widthProperty().divide(5).subtract(40));
- vbox.layoutYProperty().bind(scene.heightProperty().divide(5).subtract(40));
- hb1.setStyle("-fx-padding: 2;" +
- "-fx-border-style: solid inside;" +
- "-fx-border-width: 2;" +
- "-fx-border-insets: 5;" +
- "-fx-border-radius: 5;" +
- "-fx-border-color: blue;");
- vb2.setStyle("-fx-padding: 2;" +
- "-fx-border-style: solid inside;" +
- "-fx-border-width: 2;" +
- "-fx-border-insets: 5;" +
- "-fx-border-radius: 5;" +
- "-fx-border-color: blue;");
- vbox.getChildren().addAll(hb1,lc, new HBox(cbport,btport , txtimeini,txtimeatu),accTerminalAD, accTerminalJFX);
- cbport.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- cbport.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- cbport.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- cbport.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- cbport.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- gp.getChildren().addAll(vbox);
- lbcode.setFill(Color.RED);
- lbaction.setFill(Color.BLUE);
- btsendposi.setOnMouseClicked(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- if(cbxAuto.selectedProperty().getValue()==true){
- System.out.println("modo altomatico ajustado desmarque");
- taTerminalJFX.appendText("modo altomatico ajustado desmarque" +"\n");
- }else{
- try {
- vlsendPos=1+ vlsendPos;
- System.out.println("temperatura ajustada para +:"+vlsendPos);
- taTerminalJFX.appendText("temperatura ajustada para +"+vlsendPos +"\n");
- tfMax.setText(""+vlsendPos);
- serialport.writeBytes("X".getBytes());
- } catch (SerialPortException ex) {
- taTerminalJFX.appendText("Error+envio de bytes X:");
- }}
- }
- });
- btsendposi.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- btsendposi.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btsendposi.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btsendposi.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btsendposi.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btsendnegativo.setOnMouseClicked(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- if(cbxAuto.selectedProperty().getValue()==true){
- System.out.println("modo altomatico ajustado desmarque");
- taTerminalJFX.appendText("modo altomatico ajustado desmarque"+"\n" );
- }else{
- try {
- vlsendPos= vlsendPos-1;
- System.out.println("temperatura ajustaada para -:"+vlsendPos);
- taTerminalJFX.appendText("temperatura ajustaada para -:"+vlsendPos +"\n");
- tfMax.setText(""+vlsendPos);
- serialport.writeBytes("Y".getBytes());
- } catch (SerialPortException ex) {
- taTerminalJFX.appendText("Error-error ao enviar byte Y:\n" );
- //Logger.getLogger(TempInoFXb10.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
- });
- btsendnegativo.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- btsendnegativo.setOnMouseEntered(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btsendnegativo.setStyle(
- "-fx-background-color: #7652B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btsendnegativo.setOnMouseExited(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- btsendnegativo.setStyle(
- "-fx-background-color: #4682B4;"+
- "-fx-effect:dropshadow(one-pass-box,black,8,0.0,2,0);"+
- "-fx-font: bold italic 10pt \"Arial\";");
- }
- });
- btport.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- Blend blend = new Blend();
- blend.setMode(BlendMode.COLOR_BURN);
- btport.setEffect(blend );
- txtimeini.setText("Horario de Inicio "+""+odatas+":"+dt.getMinutes()+":"+dt.getSeconds());
- try {
- serialport = new SerialPort(cbport.getValue().toString());
- try {
- serialport.openPort();
- serialport.setParams(9600, 8, 1, 0);
- serialport.setEventsMask(SerialPort.MASK_RXCHAR);
- } catch (SerialPortException ex) {
- taTerminalJFX.appendText("Error-error ao conectar ao arduino ER1:"+ex.getMessage()+"\n");
- }
- if (serialport.isOpened() == true) {
- stage.setTitle("Conectado");
- } else {
- stage.setTitle("Desconectando");
- }
- serialport.addEventListener(new SerialPortEventListener() {
- @Override
- public void serialEvent(SerialPortEvent serialPortEvent) {
- try {
- input = serialport.readString(serialPortEvent.getEventValue());
- if (serialPortEvent.isRXCHAR()) {
- if (input.endsWith("\r\n")) {
- taTerminalAD.appendText(input);
- taTerminalJFX.appendText("entrada e saida de dados: "+input+"\n");
- System.out.print("dados:");
- System.out.println("" + input.substring(0, input.indexOf("\r\n")));
- vlCode = input.substring(0, input.indexOf("\r\n"));
- if (vlCode.toString().equals("Dallas Temperature library".toString())) {
- lbaction.setText("start");
- System.out.println("Action : Iniciando aplicativo" );
- taTerminalJFX.appendText("start\n"+"Action : Iniciando aplicativo"+"\n");
- }
- ///retorno de TEMPERATURA
- if (vlCode.toString().equals("-".toString())) {
- lbaction.setText("Action: Ventilador OFF");
- taTerminalJFX.appendText("Action: Ventilador OFF"+"\n");
- // desligar o ventilador
- serialport.writeBytes("B".getBytes());
- }
- if (vlCode.toString().equals("+".toString())) {
- lbaction.setText("Action: Ventilador ON");
- taTerminalJFX.appendText("Action: Ventilador ON"+"\n");
- serialport.writeBytes("A".getBytes());
- }
- if (vlCode.toString().length()==5) {
- lbcode.setText("Temperatura: " + vlCode+ " Cº");
- taTerminalJFX.appendText("Temperatura: " + vlCode+ " Cº"+"\n");
- };
- if (vlCode.toString().equals("DESLIGADO".toString())) {
- lbaction.setText("Action: Ventilador OFF");
- taTerminalJFX.appendText("Action: Ventilador OFF"+"\n");
- }
- if (vlCode.toString().length()==2) {
- lbcode.setText("Temperatura: " + vlCode+ " Cº");
- taTerminalJFX.appendText("Temperatura: " + vlCode+ " Cº"+"\n");
- Date dt=new Date();
- int odatas=dt.getHours()-1;
- strdatas=""+odatas+":"+dt.getMinutes()+":"+dt.getSeconds();
- double psd=Double.parseDouble(vlCode);
- xychtdia.getData().addAll(new XYChart.Data( ""+strdatas, psd));
- contpieOne= contpieOne+1;
- System.out.println("lop de pie e entrada de temperatora"+contpieOne+"tmp"+vlCode);
- txtimeatu.setText("Atual "+odatas+":"+dt.getMinutes()+":"+dt.getSeconds());
- if(psd>20){
- contfrio=contfrio+1;
- System.out.println("entrada maio que 20 contfrio=contfrio+1;"+contfrio);
- pieChartDatas1.addAll( new PieChart.Data("Quente",contfrio));
- }
- if(psd<21){
- System.out.println("entrada menor que 21");
- }
- };
- if(cbxAuto.selectedProperty().getValue()==true){
- try {
- serialport.writeBytes("k".getBytes());
- System.out.println("modo altomatico ajustado");
- taTerminalJFX.appendText("modo altomatico ajustado"+"\n");
- } catch (SerialPortException ex) {
- taTerminalJFX.appendText("error modo automatico"+"\n");
- }
- }else if(cbxAuto.selectedProperty().getValue()==false){
- System.out.print("AUTOMATICO NAO AJUSTADO");
- taTerminalJFX.appendText("AUTOMATICO NAO AJUSTADO"+"\n");
- } }
- }
- } catch (SerialPortException ex) {
- taTerminalJFX.appendText("error : Sem porta de conexao escolhida\n"+ex.getMessage()+"\n");
- System.err.println("error : Sem porta de conexao escolhida");
- }
- }
- });
- } catch (Exception e) {
- e.getMessage();
- }
- }
- });
- stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
- @Override
- public void handle(WindowEvent event) {
- Platform.exit();
- try {
- serialport.closePort();
- } catch (SerialPortException ex) {
- System.err.println("a porta ainda estava fechada antes do aplicativo ser finalizado");
- taTerminalJFX.appendText("error : a porta ainda estava fechada antes do aplicativo ser finalizado"+"\n");
- }
- }
- });
- stage.show();
- }
- //
- public void pbestatistica(){
- stageesta.setScene(sceneesta);
- VBox vbest1=new VBox(6);
- Text txtest=new Text("Estatisticas\n"
- + "Horario de Inicio :");
- HBox hbest=new HBox(10);
- vbest1.getChildren().addAll(txtest,hbest);
- //base de frio e quente 25 a cim quente a baixo frio
- pieChart1.setTitle("Estatisticas do Dia");
- pieChart1.setPrefSize(50, 50);
- pieChart1.setLabelLineLength(10);
- pieChart1.setLegendSide(Side.TOP);
- //
- //estatisticas de temparatura que esteve mais tempo ao dia
- pieChart2.setTitle("Estatisticas de temperaturas ao dia");
- pieChart2.setPrefSize(50, 50);
- pieChart2.setLabelLineLength(10);
- pieChart2.setLegendSide(Side.TOP);
- hbest.getChildren().addAll(pieChart1,pieChart2);
- gpesta.getChildren().addAll(vbest1);
- stageesta.show();
- }
- /**
- * bem10jfx.blogspot.com
- */
- public static void main(String[] args) {
- launch(args);
- }
- }
- ///bem10jfx.blogspot.com
- kml
Advertisement
Add Comment
Please, Sign In to add comment