Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
<!DOCTYPE HTML>
<meta charset="utf-8" />
<html>
<head>
<title>SAA-Messages</title>
<style>
th {
text-align: left;
}
table {
text-align: left;
table-layout: fixed;
width: 100%;
}
</style>
<script type="text/javascript" src="js/websocket.js"></script>
</head>
<body>
<h1>Schnittstellensimulator SAA-EXCON</h1>
<h2>für ADLER III Version D12</h2>
<!-- divFunctions -->
<hr>
Verbindungsaufbau zum Adler-Plugin der entsprechenden Übung:<br>
<table style="width:40.5%" id="HeaderTable">
<tr id="HeaderTableRow">
<td>
<div id="WebSocketStart">
<input type="button" id="create" value="Connect to Server" onclick="WebSocketTest()">
</div>
</td>
<td>
<form>
<input type="text" value="localhost:2080" id="ipadresse" />
</form>
</td>
<td>
<div id="Serverconnect">
<font color="red">
Server: not connected
</font>
</div>
</td>
</tr>
</table>
<hr>
<!-- Alle ISM-Anfragen der ICD senden-->
<div id="divFunctions">
<h1>fachliche Meldungen</h1>
<h2>7.1.3 EX-FQ(BA-BB-FK) Wirkfeldplanung</h2>
<input type="button" id="EX-FQ(BA-BB-FK)" value="Send wirkfeldplanung" onclick="sendWirkfeldplanung()">
</div>
<p id="receivedMessages">
</html>
@@ -0,0 +1,101 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSON WebSocket Sender</title>
</head>
<body>
<h2>JSON WebSocket Sender</h2>
<label for="jsonType">Wähle ein JSON-Telegramm:</label>
<select id="jsonType" onchange="updateFormFields()">
<option value="typeA">Typ A</option>
<option value="typeB">Typ B</option>
<option value="typeC">Typ C</option>
</select>
<form id="jsonForm">
<div id="formFields"></div>
<button type="button" onclick="sendJson()">Senden</button>
</form>
<h3>Gesendete Nachricht:</h3>
<pre id="output"></pre>
<script>
const socket = new WebSocket("ws://localhost:8080"); // WebSocket-Server-Adresse
socket.onopen = () => console.log("WebSocket verbunden");
socket.onerror = (error) => console.error("WebSocket Fehler:", error);
socket.onmessage = (event) => console.log("Antwort erhalten:", event.data);
const jsonTemplates = {
typeA: { key1: "Wert A1", key2: "Wert A2", nested: { subKey1: "SubWert A1", subKey2: "SubWert A2", deepNested: { deepKey1: "DeepWert A1" } } },
typeB: { id: "123", name: "Beispielname", details: { age: "30", city: "Berlin", address: { street: "Hauptstraße 1", zip: "12345" } } },
typeC: { sensor: "Temperatur", timestamp: "2025-02-23T12:00:00Z", data: { value: "22.5", unit: "Celsius", meta: { source: "Sensor A", accuracy: "0.1" } } }
};
let savedJson = { typeA: {}, typeB: {}, typeC: {} };
function createInputFields(parentElement, obj, prefix = "") {
for (const key in obj) {
if (typeof obj[key] === "object" && obj[key] !== null) {
const fieldset = document.createElement("fieldset");
const legend = document.createElement("legend");
legend.textContent = key;
fieldset.appendChild(legend);
createInputFields(fieldset, obj[key], `${prefix}${key}.`);
parentElement.appendChild(fieldset);
} else {
const label = document.createElement("label");
label.textContent = key + ": ";
const input = document.createElement("input");
input.type = "text";
input.id = `${prefix}${key}`;
input.name = `${prefix}${key}`;
input.value = obj[key];
parentElement.appendChild(label);
parentElement.appendChild(input);
parentElement.appendChild(document.createElement("br"));
}
}
}
function updateFormFields() {
const selectedType = document.getElementById("jsonType").value;
const formContainer = document.getElementById("formFields");
formContainer.innerHTML = "";
const template = savedJson[selectedType] && Object.keys(savedJson[selectedType]).length ? savedJson[selectedType] : jsonTemplates[selectedType];
createInputFields(formContainer, template);
}
function retrieveFormValues(obj, prefix = "") {
const result = {};
for (const key in obj) {
if (typeof obj[key] === "object" && obj[key] !== null) {
result[key] = retrieveFormValues(obj[key], `${prefix}${key}.`);
} else {
result[key] = document.getElementById(`${prefix}${key}`).value;
}
}
return result;
}
function sendJson() {
const selectedType = document.getElementById("jsonType").value;
const jsonMessage = retrieveFormValues(jsonTemplates[selectedType]);
savedJson[selectedType] = jsonMessage; // Speichere das letzte gesendete JSON für den Typ
console.log("Gespeichertes JSON:", savedJson);
console.log("Gesendetes JSON:", jsonMessage);
socket.send(JSON.stringify(jsonMessage));
document.getElementById("output").textContent = JSON.stringify(jsonMessage, null, 2);
}
// Initial Formularfelder setzen
updateFormFields();
</script>
</body>
</html>
+193
View File
@@ -0,0 +1,193 @@
var exampleSocket;
var firstMsg = true;
var textBoxArr = [];
var SelBranchVal = "";
var connectedToServer = false;
var msg;
window.onload = function () {
WebSocketTest();
}
function WebSocketTest() {
if ("WebSocket" in window) {
{
var ipadresse = document.getElementById("ipadresse").value;
exampleSocket = new WebSocket("ws://" + ipadresse);
connectedToServer = true;
}
exampleSocket.onopen = function () {
document.getElementById("Serverconnect").innerHTML = "Server: connected";
document.getElementById("Serverconnect").style.color = "green"
};
//wird immer aufgerufen wenn der Socket eine Nachricht vom Server empfängt
exampleSocket.onmessage = function (event) {
console.log(msg);
msg = JSON.parse(event.data);
document.getElementById("receivedMessages").innerHTML += JSON.stringify(msg);
document.getElementById("receivedMessages").innerHTML += "<br>";
};
exampleSocket.onclose = function () {
// websocket is closed.
document.getElementById("Serverconnect").innerHTML = "Server: not connected";
document.getElementById("Serverconnect").style.color = "grey";
// document.getElementById("Wlsconnect").innerHTML = "Wls: not connected";
document.getElementById("Wlsconnect").style.color = "red";
connectedToServer = false;
alert("Connection to Server closed.");
};
}
else {
// The browser doesn't support WebSocket
alert("WebSocket is NOT supported by your Browser!");
}
}
function sendWirkfeldplanung() {
console.log ("sendWirkfeldplanung");
const jsonHeader = { type:"", typeId:11, uuid:"550e8400-e29b-41d4-a716-446655440001",version:"SAA-X_V0.0.1",timestamp:"2024-09-20T15:30:00.123Z",sender:"sender@example.com",receiver:"EXCON",referenceUuid:"refUUID123"};
const verein="5{6}"; // EX-L2
const einheit= // EX-L3 Einheit
{verein:verein, // EX-L2
r:5,
oi:"1. Feuerstellung" // EX-L19 Orts ID enum
}
const zielgeometrie="P" // EX-L4 Zielgeometrie enum
const hoeheWirkmittel=234; //EX-L5 int
const abfeuerungsArt="F"; // EX-L6 enum
const forderung="NIE"; // EX-L7 enum
const geschossSorte="Nebelgeschoss IR-DM125" // EX-L9
const ladung={} // EX-L10
const zuender={} // EX-L11
const geschosse= // EX-L8 Geschosse
{
geschossSorte:geschossSorte, // EX-L9 Geschosssorte enum
}
const koordinateWirkmittel={latitude:20.0, longitude:30.4}; //EX-L13
const auftreffpunkt={} //EX-L14
const zuenderFunktion="ZZ" // EX-L41 enum
const auftreffpunktWirkmittel={koordinate:koordinateWirkmittel,
hoehe:hoeheWirkmittel}; // EX-L14
const kenner={Waffensystemkenner:"B"}; //EX-L27
const geschoss= // EX-L36 Feuerkommando Geschosse
{geschossSorte:geschossSorte, // EX-L9
ladung:ladung, // EX-L10
zuender:zuender, // EX-L11
zuenderFunktion:zuenderFunktion, // EX-L41
zuender_zeit:200, // int
anzahl:5, // int
intervall:0.8} // double
const flugbahnpunkt1= // EX-L35 Flugbahnpunkt
{zeit:30.5, // double Sekunden
xRelativ:222.2, // double Meter
yRelativ:333.3, // double Meter
zRelativ:444.4};// double Meter
const flugbahnpunkt2= // EX-L35 Flugbahnpunkt
{zeit:31.5, // double Sekunden
xRelativ:222.3, // double Meter
yRelativ:333.4, // double Meter
zRelativ:444.5};// double Meter
const flugbahnpunkte = [flugbahnpunkt1, flugbahnpunkt2];
const streuung= // EX-L39 Streuungsdaten
{ peRange:2.2, // double Meter
peDeflection:3.3, // double Meter
peBurstRange:4.4, // double Meter
peBurstDeflection:5.5}; // double Meter
const wirkmittel1={kenner:kenner, // EX-L27
auftreffpunkt:auftreffpunktWirkmittel,
flugzeit:200,
gipfelhoehe:101,
geschoss:geschoss,
flugbahnpunkt:flugbahnpunkte,
streuung:streuung
}; // EX-L34
const wirkmittel2={kenner:kenner, // EX-L27
auftreffpunkt:auftreffpunktWirkmittel,
flugzeit:300,
gipfelhoehe:104,
geschoss:geschoss,
flugbahnpunkt:flugbahnpunkte,
streuung:streuung
}; // EX-L34
const wirkmittelArray = [wirkmittel1, wirkmittel2];
const feuerkommando1= // EX-L33 Feuerkommando
{verein:"verein feuerkommando1", // EX-L2
wirkmittel:wirkmittelArray}; // EX-L33
const feuerkommando2= // EX-L33 Feuerkommando
{verein:"verein feuerkommando2", // EX-L2
wirkmittel:wirkmittelArray}; // EX-L33
const feuerkommandos = [feuerkommando1,feuerkommando2];
const wirkmittelFeuerkommando= // EX-L34 Wirkmittel Feuerkommando
{kenner:kenner, // EX-L27
auftreffpunkt:auftreffpunkt,// EX-L14
flugzeit:60, // int Sekunden
gipfelhoehe:100, // int Meter
geschoss:geschoss, // EX-L36
flugbahnpunkt:flugbahnpunkte, // EX-L35
streuung:streuung // EX-L39
};
// EX-L12
const zieldaten= {nummer:1, // int
geometrie:2, // EX-L4
koordinate:3, // EX-L14
relativKoordinate:4, // EX-L14
breiteRadius:5, // int
tiefe:0, // int
zielachse:0, // int
zog:0, // int
elemente:0, // int
typ:0, // EX-L20
subTyp:1}; // 1
// EX-FQ(BA-BB-FK) Wirkfeldplanung data
const data={ feuerkampfReferenz:"feuerkampfReferenz", // string
zieldaten: zieldaten, // EX-L12
abfeuerungsArt: abfeuerungsArt, // EX-L6
forderung:forderung, // EX-L7
dauer:10, // int
feuerkommando:feuerkommandos // EX-L33
}
// EX-FQ(BA-BB-FK) Wirkfeldplanung
const wirkfeldplanung = { id:"EX-FQ(BA-BB-FK)",
name:"EXCON Wirkfeldplanung",
type:"EX-FQ(BA-BB-FK)",
typeId:11,
uuid:"550e8400-e29b-41d4-a716-446655440001",
version:"SAA-X_V0.0.1",
timestamp:"2024-09-20T15:30:00.123Z",
sender:"sender@example.com",
receiver:"EXCON",
referenceUuid:"refUUID123",
data:data};
exampleSocket.send(JSON.stringify(wirkfeldplanung ));
}
+92
View File
@@ -0,0 +1,92 @@
var exampleSocket;
var firstMsg = true;
var textBoxArr = [];
var SelBranchVal = "";
var connectedToServer = false;
var msg;
window.onload = function () {
WebSocketTest();
}
function WebSocketTest() {
if ("WebSocket" in window) {
{
var ipadresse = document.getElementById("ipadresse").value;
exampleSocket = new WebSocket("ws://" + ipadresse);
connectedToServer = true;
}
exampleSocket.onopen = function () {
document.getElementById("Serverconnect").innerHTML = "Server: connected";
document.getElementById("Serverconnect").style.color = "green"
};
//wird immer aufgerufen wenn der Socket eine Nachricht vom Server empfängt
exampleSocket.onmessage = function (event) {
console.log(msg);
msg = JSON.parse(event.data);
document.getElementById("receivedMessages").innerHTML += JSON.stringify(msg);
document.getElementById("receivedMessages").innerHTML += "<br>";
};
exampleSocket.onclose = function () {
// websocket is closed.
document.getElementById("Serverconnect").innerHTML = "Server: not connected";
document.getElementById("Serverconnect").style.color = "grey";
// document.getElementById("Wlsconnect").innerHTML = "Wls: not connected";
document.getElementById("Wlsconnect").style.color = "red";
connectedToServer = false;
alert("Connection to Server closed.");
};
}
else {
// The browser doesn't support WebSocket
alert("WebSocket is NOT supported by your Browser!");
}
}
function sendWirkfeldplanung() {
console.log ("sendWirkfeldplanung");
const jsonHeader = { type:"", typeId:0, uuid:"",version:"V1",timestamp:"",sender:"SSA1",receiver:"EXCON",referenceUuid:"refUUID123"};
const zieldaten= {nummer:1,geometrie:2,koordinate:3,relativKoordinate:4,breiteRadius:5,tiefe:0, zielachse:0, zog:0, elemente:0, typ:0, subTyp:0};
const abfeuerungsArt="A"; // EX-L6
const forderung="ABR"; // EX-L7
const vereinFeuerkommando="2{3}"; // EX-L2
// Wirkmittel
const kennerWirkmittel={}; //EX-L27
const auftreffpunktWirkmittel={};
const wirkmittelFeuerkommando={kenner:kennerWirkmittel,auftreffpunkt:auftreffpunktWirkmittel, flugzeit:200, gipfelhoehe:101}; // EX-L34
const feuerkommando={verein:vereinFeuerkommando, wirkmittel:wirkmittelFeuerkommando}; // EX-L33
const verein="5{6}"; // EX-L2
const kenner={} //EX-L27
const auftreffpunkt={} //EX-L14
const geschossSorte={} // EX-L9
const ladung={} // EX-L10
const zuender={} // EX-L11
const zuenderFunktion={}
const geschoss={geschossSorte:geschossSorte, ladung:ladung,zuender:zuender,zuenderFunktion:zuenderFunktion, zuender_zeit:200, anzahl:5, intervall:0.8}
const flugbahnpunkt={zeit:30.5,xRelativ:222.2,yRelativ:333.3,zRelativ:444.4};
const streuung={ peRange:2.2, peDeflection:3.3,peBurstRange:4.4, peBurstDeflection:5.5};
const wirkmittel={kenner:kenner, auftreffpunkt:auftreffpunkt, flugzeit:60,gipfelhoehe:100,schussrichtung:333,geschoss:geschoss, flugbahnpunkt:flugbahnpunkt};
const data={ feuerkampfReferenz:"feuerkampfReferenz", zieldaten: zieldaten, abfeuerungsArt: abfeuerungsArt, forderung:forderung, dauer:10, feuerkommando:feuerkommando,verein:verein, wirkmittel:wirkmittel};
const wirkfeldplanung = { id:"EX-FQ(BA-BB-FK)",name:"EXCON Wirkfeldplanung", header:jsonHeader, data:data};
exampleSocket.send(JSON.stringify(wirkfeldplanung ));
}
+124
View File
@@ -0,0 +1,124 @@
var exampleSocket;
var firstMsg = true;
var textBoxArr = [];
var SelBranchVal = "";
var connectedToServer = false;
var msg;
window.onload = function () {
WebSocketTest();
}
function WebSocketTest() {
if ("WebSocket" in window) {
{
var ipadresse = document.getElementById("ipadresse").value;
exampleSocket = new WebSocket("ws://" + ipadresse);
connectedToServer = true;
}
exampleSocket.onopen = function () {
document.getElementById("Serverconnect").innerHTML = "Server: connected";
document.getElementById("Serverconnect").style.color = "green"
};
//wird immer aufgerufen wenn der Socket eine Nachricht vom Server empfängt
exampleSocket.onmessage = function (event) {
console.log(msg);
msg = JSON.parse(event.data);
document.getElementById("receivedMessages").innerHTML += JSON.stringify(msg);
document.getElementById("receivedMessages").innerHTML += "<br>";
};
exampleSocket.onclose = function () {
// websocket is closed.
document.getElementById("Serverconnect").innerHTML = "Server: not connected";
document.getElementById("Serverconnect").style.color = "grey";
// document.getElementById("Wlsconnect").innerHTML = "Wls: not connected";
document.getElementById("Wlsconnect").style.color = "red";
connectedToServer = false;
alert("Connection to Server closed.");
};
}
else {
// The browser doesn't support WebSocket
alert("WebSocket is NOT supported by your Browser!");
}
}
function sendWirkfeldplanung() {
console.log ("sendWirkfeldplanung");
const jsonHeader = { type:"", typeId:0, uuid:"",version:"V1",timestamp:"",sender:"SSA1",receiver:"EXCON",referenceUuid:"refUUID123"};
const zieldaten= {nummer:1,geometrie:2,koordinate:3,relativKoordinate:4,breiteRadius:5,tiefe:0, zielachse:0, zog:0, elemente:0, typ:0, subTyp:0};
const abfeuerungsArt="A"; // EX-L6
const forderung="ABR"; // EX-L7
const vereinFeuerkommando="2{3}"; // EX-L2
// Wirkmittel Feuerkommando EX-L34
const kennerWirkmittel={Waffensystemkenner:"B"}; //EX-L27
const koordinateWirkmittel={latitude:20.0, longitude:30.4}; //EX-L13
const hoeheWirkmittel={Hoehe: 234}; //EX-L5
const auftreffpunktWirkmittel={koordinate:koordinateWirkmittel,
hoehe:hoeheWirkmittel}; // EX-L14
const wirkmittelFeuerkommando={kenner:kennerWirkmittel,
auftreffpunkt:auftreffpunktWirkmittel,
flugzeit:200,
gipfelhoehe:101}; // EX-L34
const feuerkommando={verein:vereinFeuerkommando, wirkmittel:wirkmittelFeuerkommando}; // EX-L33
const verein="5{6}"; // EX-L2
const kenner={} //EX-L27
const auftreffpunkt={} //EX-L14
const geschossSorte={} // EX-L9
const ladung={} // EX-L10
const zuender={} // EX-L11
const zuenderFunktion={}
const geschoss={geschossSorte:geschossSorte,
ladung:ladung,
zuender:zuender,
zuenderFunktion:zuenderFunktion,
zuender_zeit:200,
anzahl:5,
intervall:0.8}
const flugbahnpunkt={zeit:30.5,
xRelativ:222.2,
yRelativ:333.3,
zRelativ:444.4};
const streuung={ peRange:2.2,
peDeflection:3.3,
peBurstRange:4.4,
peBurstDeflection:5.5};
const wirkmittel={kenner:kenner,
auftreffpunkt:auftreffpunkt,
flugzeit:60,
gipfelhoehe:100,
schussrichtung:333,
geschoss:geschoss,
flugbahnpunkt:flugbahnpunkt};
const data={ feuerkampfReferenz:"feuerkampfReferenz",
zieldaten: zieldaten,
abfeuerungsArt: abfeuerungsArt,
forderung:forderung, dauer:10,
feuerkommando:feuerkommando,
verein:verein,
wirkmittel:wirkmittel};
const wirkfeldplanung = { id:"EX-FQ(BA-BB-FK)",
name:"EXCON Wirkfeldplanung",
header:jsonHeader,
data:data};
exampleSocket.send(JSON.stringify(wirkfeldplanung ));
}