Fórum Como salvar um arraylist em arquivo (DATALOG) #588724
12/11/2017
0
Estou tentando fazer uma plicação java que leia dados de um porta serial e armazene os valores recebidos em um arquivo TXT(datalog)
JavaFX com bilioteca JSSC para comunicação serial
Recebo os valores estou os armazenado em um array para depois salvar em arquivo(não estou conseguindo
segue codigo
JavaFX com bilioteca JSSC para comunicação serial
Recebo os valores estou os armazenado em um array para depois salvar em arquivo(não estou conseguindo
segue codigo
//import java.awt.Font;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import jssc.SerialPort;
import static jssc.SerialPort.MASK_RXCHAR;
import jssc.SerialPortEvent;
import jssc.SerialPortException;
import jssc.SerialPortList;
import javafx.scene.text.Font;
import javafx.scene.text.TextAlignment;
////
public class Temp_Uno extends Application {
SerialPort arduinoPort = null;
ObservableList<String> portList;
Label labelValue;
private void detectPort(){
portList = FXCollections.observableArrayList();
String[] serialPortNames = SerialPortList.getPortNames();
for(String name: serialPortNames){
System.out.println(name);
portList.add(name);
}
}
@Override
public void start(Stage primaryStage) {
labelValue = new Label();
labelValue.setFont(new Font("Arial", 100));
labelValue.setTextFill(Color.web("#00008B"));
labelValue.setTextAlignment(TextAlignment.JUSTIFY);
detectPort();
final ComboBox comboBoxPorts = new ComboBox(portList);
comboBoxPorts.valueProperty()
.addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
System.out.println(newValue);
disconnectArduino();
connectArduino(newValue);
}
});
VBox vBox = new VBox();
vBox.getChildren().addAll(
comboBoxPorts, labelValue);
StackPane root = new StackPane();
root.getChildren().add(vBox);
Scene scene = new Scene(root, 500, 250);
primaryStage.setTitle("Selecione a Porta onde se encontra o Arduino");
primaryStage.setScene(scene);
primaryStage.show();
}
public boolean connectArduino(String port){
System.out.println("Conectado ao Arduino");
Path destino = Paths.get("d:\\\\temperatura.txt");
ArrayList lista = new ArrayList(); //array para armazenar valores recebidos da serial
boolean success = false;
SerialPort serialPort = new SerialPort(port);
try {
serialPort.openPort();
serialPort.setParams(
SerialPort.BAUDRATE_9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
serialPort.setEventsMask(MASK_RXCHAR);
serialPort.addEventListener((SerialPortEvent serialPortEvent) -> {
if(serialPortEvent.isRXCHAR()){
try {
String st = serialPort.readString(serialPortEvent
.getEventValue());
System.out.println("Temperatura Atual => : " + st);
lista.add (st);
for (int i = 0; i < lista.size(); i++) {
System.err.println("Imprimindo Indice "+i);
System.err.println("Imprimindo Lista " + lista.get(i));
// Files.list(destino, lista.get(i));
}
// Writer arq = null;
// PrintWriter gravarArq = new PrintWriter(arq);
// gravarArq.printf(st);
// arq.close();
// String valor = st;
// byte[] valorbyte = valor.getBytes();
// try {
// Files.write(destino, valorbyte);
// } catch (IOException ex) {
// Logger.getLogger(JavaFX_jssc_Uno.class.getName()).log(Level.SEVERE, null, ex);
// }
//Update label in ui thread
Platform.runLater(() -> {
labelValue.setText(st);
});
} catch (SerialPortException ex) {
Logger.getLogger(JavaFX_jssc_Uno.class.getName())
.log(Level.SEVERE, null, ex);
}
}
});
arduinoPort = serialPort;
success = true;
} catch (SerialPortException ex) {
Logger.getLogger(JavaFX_jssc_Uno.class.getName())
.log(Level.SEVERE, null, ex);
System.out.println("Erro ao conectar Serial do Arduino: " + ex.toString());
}
return success;
}
public void disconnectArduino(){
System.out.println("Arduino desconectado");
if(arduinoPort != null){
try {
arduinoPort.removeEventListener();
if(arduinoPort.isOpened()){
arduinoPort.closePort();
}
} catch (SerialPortException ex) {
Logger.getLogger(JavaFX_jssc_Uno.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
@Override
public void stop() throws Exception {
disconnectArduino();
super.stop();
}
public static void main(String[] args) {
launch(args);
}
}
George Castro
Curtir tópico
+ 0
Responder
Post mais votado
12/11/2017
da uma olhada no log4j
https://www.devmedia.com.br/introducao-ao-log4j/28602
https://www.devmedia.com.br/introducao-ao-log4j/28602
Deivid Nascimento
Responder
Gostei + 1
Mais Posts
13/11/2017
George Castro
Cara valeu pela atenção. Consegui solucionar logo após o pedido de ajuda. Fiz assim:
Path destino = Paths.get("d:\\\\temperatura.txt");
ArrayList lista = new ArrayList(); //array para armazenar valores recebidos da serial
.....
......
if (serialPortEvent.isRXCHAR()) {
try {
String st = serialPort.readString(serialPortEvent
.getEventValue());
System.out.println(st);
lista.add(st);
byte[] dadoembyte = st.getBytes();
try {
Files.write(destino, lista);
} catch (IOException ex) {
Logger.getLogger(JavaFX_jssc_Uno.class.getName()).log(Level.SEVERE, null, ex);
}
//Update label in ui thread
Platform.runLater(() -> {
labelValue.setText(st);
});
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)