Skip to content
Commits on Source (3)
......@@ -9,7 +9,7 @@ import org.json.JSONObject;
public class GetDataFromAmsatDatabase implements Commande {
private String urlDatabase = null;
final private SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
......
UVSQSatDecoder=0.5
Message= UVSQsat launch 23/01/21 14H24 UTC
Message= UVSQsat - Temporary Norad ID 47438
NoradID=99749
Comment=0
\ No newline at end of file
package org.josast.UVSQsatDecoder;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import java.io.File;
import java.io.IOException;
......@@ -27,11 +31,18 @@ public class App extends Application {
System.setProperty("glass.accessible.force", "false");
scene = new Scene(loadFXML("UVSQsat"), 800, 600);
stage.setScene(scene);
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
Platform.exit();
System.exit(0);
}
});
Controler ctrl = fxmlLoader.getController();
ctrl.setPrimaryStage(stage);
scene.getStylesheets().add(this.getClass().getResource("boot.css").toExternalForm());
stage.setTitle("UVSQsat Decoder - "+ctrl.getversion());
stage.getIcons().add(new Image(App.class.getResourceAsStream("OIP.jpg")));
ctrl.initMMI();
stage.show();
}
......@@ -45,6 +56,7 @@ public class App extends Application {
logger.info("class "+App.class.getResource(fxml + ".fxml").getFile().toString());
return fxmlLoader.load();
}
public static void main(String[] args) {
// initialisation du systéme de log en premier
......
......@@ -8,6 +8,8 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
......@@ -49,10 +51,14 @@ import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javafx.stage.Window;
......@@ -60,6 +66,7 @@ import javafx.stage.Window;
public class Controler {
private static Logger appLogger = Logger.getLogger("AmsatLogger");
private int delayRefresh = 6; // toute les 6 heures
private LogFile logfile = null;
private static final String LINE_SEPARATOR = "\r\n";
......@@ -129,6 +136,12 @@ public class Controler {
@FXML
private ImageView imageViewSatellite;
@FXML
private WebView WebViewInfo;
@FXML
private VBox VboxInfo;
//
@FXML
private TextField tfDateCurrent;
......@@ -658,11 +671,61 @@ private TextField tftrxvuTxUptimeRaw;
@FXML
private TextField tftrxvuTxStateRaw;
@FXML
private Tab TabDataSream;
@FXML
private Tab infoTab;
ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
private ScheduledFuture<?> scheduledFuture = null;
private void setupDataStream ()
{
ReceivedData decodedData = receivedFrame.getLastReceivedData();
if (decodedData != null) {
DecodedData.clear();
ax25display.setdata(decodedData);
if (ax25display.GetCallsignFrom().contains("LATMOS")) {
displayUVSQsat.setData(decodedData);
Frame frame = displayUVSQsat.getFrame();
if (frame !=null)
{
DecodedData.appendText(displayUVSQsat.getData());
}
else
{
DecodedData.appendText(ax25display.getDisplay());
}
// release memory
frame=null;
}else
{
DecodedData.appendText(ax25display.getDisplay());
}
}
else
{
DecodedData.setText("No Value to display");
}
}
@FXML
private void HandleTabDataSreamChange()
{
Platform.runLater(new Runnable() {
@Override
public void run() {
if(TabDataSream.isSelected())
setupDataStream();
}});
}
@FXML
private void HandleIP(ActionEvent event)
......@@ -707,7 +770,7 @@ ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
if (decodedData != null) {
updateFrame(receivedFrame.getNumberFrame());
//
ax25display.setdata(decodedData);
if (ax25display.GetCallsignFrom().contains("LATMOS")) {
......@@ -720,8 +783,10 @@ ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
tfDateCurrent.setText(date);
int sid = displayUVSQsat.getFrame().getSid();
tfFrameSid.setText(""+sid);
if(TabDataSream.isSelected()) // append le texte uniquement si visible
{
DecodedData.appendText(displayUVSQsat.getData());
}
displayUvsqsat(sid,(UiFrame) displayUVSQsat.getFrame().getUiFrame());
//release memory
......@@ -733,6 +798,7 @@ ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
displayLog( "Frame not reconized");
ax25display.setdata(decodedData);
displayLog(decodedData.toString());
DecodedData.appendText(ax25display.getDisplay());
}
......@@ -742,7 +808,7 @@ ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
{
ax25display.setdata(decodedData);
displayLog(decodedData.toString());
DecodedData.appendText(ax25display.getDisplay());
// DecodedData.appendText(ax25display.getDisplay());
}
......@@ -927,30 +993,73 @@ ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
displayLog("Norad ID updated ");
}
}
String erreurmsg = message;
final String erreurmsg;
if (ver.equals(version) == false) {
erreurmsg += " New version " + ver + " available ! ";
erreurmsg = message + " New version " + ver + " available ! ";
}
this.LabelInformation.setText(erreurmsg);
else
{
erreurmsg = message;
}
Platform.runLater(new Runnable() {
@Override
public void run() {
LabelInformation.setText(erreurmsg);
displayLog("information updated from internet");
}
});
}
public void setPrimaryStage(Stage stage) {
this.primaryStage = primaryStage;
}
@FXML
private void HandleInfoTabChange()
{
Platform.runLater(new Runnable() {
@Override
public void run() {
if(infoTab.isSelected())
setupInfoTab();
}});
}
private void setupInfoTab ()
{
File f = new File("./UVSQsatDecoderWithJREHelp.html");
WebEngine engine = WebViewInfo.getEngine();
if(f.exists())
{
File file = new File(f.getAbsolutePath());
URL url = null;
try {
url = file.toURI().toURL();
} catch (MalformedURLException e) {
appLogger.severe("Error to acces to "+f.getName());
//e.printStackTrace();
}
engine.load(url.toString()); }
else
{
appLogger.severe(f.getName() + "Not Found");
}
}
public void initMMI() {
setupInfoTab();
Runnable task1 = () -> {
System.out.println("update Distant");
appLogger.info("Distant Information update");
updateDistantconfiguration();
};
// init Delay = 5, repeat the task every 1 second
ScheduledFuture<?> scheduledFuture = ses.scheduleAtFixedRate(task1,12,12 , TimeUnit.HOURS);
scheduledFuture = ses.scheduleAtFixedRate(task1,delayRefresh,delayRefresh, TimeUnit.HOURS);
logfile = new LogFile();
// initialise le log
......
......@@ -40,7 +40,15 @@ public class ModelReceivedData {
}
public ReceivedData getLastReceivedData() {
return vecRawData.lastElement();
if (vecRawData.isEmpty())
{
return null;
}
else
{
return vecRawData.lastElement();
}
}
......