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