dies und das
This commit is contained in:
@@ -427,6 +427,21 @@
|
||||
Für eine gute Fix-Qualität sind niedrige DOP-Werte und hohe, gleichmäßig verteilte Satelliten sinnvoll. Der Himmelsplot zeigt nur Satelliten, die der Empfänger per GSV mit Richtung und Höhe meldet.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<div class="p-hdr">
|
||||
<div class="p-dot"></div>
|
||||
<span class="p-lbl">GPS-Rohdaten</span>
|
||||
<span class="p-tag">NMEA</span>
|
||||
</div>
|
||||
<div class="copy-text gps-copy gps-copy_compact">
|
||||
Letzte direkt empfangene NMEA-Sätze des Empfängers. Die Ansicht scrollt intern und ist für Diagnose bei Abschattung, Drift und fehlerhaften Fixen gedacht.
|
||||
</div>
|
||||
<div class="neutral-toolbar">
|
||||
<button class="button buttonA" onclick="copyGpsRawData()">Rohdaten kopieren</button>
|
||||
</div>
|
||||
<textarea id="gps_raw_output" class="gps-raw-output" readonly spellcheck="false">--</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -663,6 +678,7 @@
|
||||
utcTime: null,
|
||||
lastFixAgeS: null,
|
||||
satellites: [],
|
||||
rawSentences: [],
|
||||
selectedSatellitePrn: null,
|
||||
plottedSatellites: []
|
||||
};
|
||||
@@ -734,6 +750,7 @@
|
||||
gpsDiagnosticsState.utcTime = null;
|
||||
gpsDiagnosticsState.lastFixAgeS = null;
|
||||
gpsDiagnosticsState.satellites = [];
|
||||
gpsDiagnosticsState.rawSentences = [];
|
||||
updateGpsDiagnosticsPanel();
|
||||
}
|
||||
|
||||
@@ -1003,9 +1020,47 @@
|
||||
setGpsQualityState('gps_diag_vdop', gpsDiagnosticsState.vdop);
|
||||
setText('gps_diag_sat_used', gpsDiagnosticsState.satellitesUsed);
|
||||
setText('gps_diag_sat_visible', gpsDiagnosticsState.satellitesVisible);
|
||||
setGpsRawOutput(gpsDiagnosticsState.rawSentences);
|
||||
drawGpsSkyPlot();
|
||||
}
|
||||
|
||||
function setGpsRawOutput(sentences) {
|
||||
var node = document.getElementById('gps_raw_output');
|
||||
if (!node) return;
|
||||
if (!Array.isArray(sentences) || !sentences.length) {
|
||||
node.value = '--';
|
||||
return;
|
||||
}
|
||||
var wasNearBottom = (node.scrollTop + node.clientHeight + 24) >= node.scrollHeight;
|
||||
node.value = sentences.join('\n');
|
||||
if (wasNearBottom) node.scrollTop = node.scrollHeight;
|
||||
}
|
||||
|
||||
async function copyGpsRawData() {
|
||||
var node = document.getElementById('gps_raw_output');
|
||||
if (!node) return;
|
||||
var text = String(node.value || '').trim();
|
||||
if (!text || text === '--') {
|
||||
setAdminStatus('Keine GPS-Rohdaten zum Kopieren');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
await navigator.clipboard.writeText(text);
|
||||
} else {
|
||||
node.focus();
|
||||
node.select();
|
||||
document.execCommand('copy');
|
||||
node.setSelectionRange(node.value.length, node.value.length);
|
||||
}
|
||||
setAdminStatus('GPS-Rohdaten kopiert');
|
||||
window.setTimeout(function() { setAdminStatus('Bereit'); }, 1800);
|
||||
} catch (error) {
|
||||
setAdminStatus('Kopieren fehlgeschlagen');
|
||||
}
|
||||
}
|
||||
|
||||
function getSelectedSatellite() {
|
||||
if (!gpsDiagnosticsState.satellites.length) return null;
|
||||
var selected = gpsDiagnosticsState.satellites.find(function(item) {
|
||||
@@ -1172,6 +1227,7 @@
|
||||
gpsDiagnosticsState.utcTime = data.utc_time || null;
|
||||
gpsDiagnosticsState.lastFixAgeS = typeof data.last_fix_age_s === 'number' ? data.last_fix_age_s : null;
|
||||
gpsDiagnosticsState.satellites = Array.isArray(data.satellites) ? data.satellites : [];
|
||||
gpsDiagnosticsState.rawSentences = Array.isArray(data.raw_sentences) ? data.raw_sentences : [];
|
||||
if (gpsDiagnosticsState.selectedSatellitePrn) {
|
||||
var stillExists = gpsDiagnosticsState.satellites.some(function(item) {
|
||||
return item.prn === gpsDiagnosticsState.selectedSatellitePrn;
|
||||
|
||||
Reference in New Issue
Block a user