Forum: PC-Programmierung Batch-Datei für DOSBOX schreiben / TDS4XX, Binärdaten --> CSV automatisch konvertieren


von Matthias (Gast)


Lesenswert?

Hallo zusammen,

ich möchte einem TDS420 gerne Daten im CSV-Format entlocken.

Dabei gibt es verschiedene Hürden:
1. Bei direkter aufzeichnung im CSV-Format auf Diskette braucht dies 
schon mal gute 10Minuten, am Ende kann eine Meldung kommen, nach der die 
Diskette voll ist.

Werden die Daten im Oszi-Internen Format auf die Disk gespeichert geht 
dies sehr viel schneller, und für 120000Punkte kommen auch nur 235KB 
zusammen. Das aufzeichnungsformat .WFM kann mit der Datei CNVRTWFM.exe 
mit dem Aufruf:
1
CNVRTWFM -i -l TEK00000.WFM
in CSV umgewandelt werden.

Dabei werden die Daten der Auzzeichnungsparameter Kanals mit '-i' 
ausgegeben und eine Datei .DAT '-l' erstellt welche die Messdaten als 
CSV enthält.

Jedoch läuft die CNVRTWFM.exe nur in der DOSBOX.

Nun möchte ich eine Batch-Datei erstellen welche folgendes tut:
1. DosBox Starten
2. In der Dosbox das Arbeitsverzeichniss Mounten
3. Diskettenlaufwerk Mounten
4. Kompletten Disk-Inhalt nach Arbeitsverzeichniss kopieren
5. Disketteninhalt löschen
6. Für jede .WFM-Datei die CNVRTWFM.exe -i -l TEKXXXXX.WFM ausführen
1
DOSBOX
2
mount C:\TDS4XX C:
3
mount A:\ A:
4
copy C:\ A:\*.*
5
del A:\*.*
6
...
7
CNVRTWFM.exe -i -l TEKXXXXX.WFM
8
...

Dabei sehe ich momentan 2 Probleme,
1. Wie schreibt man eine Batch-Datei welche die DosBox startet und dann 
noch in der BosBox weiter geht?

2. Wie kann Schritt 6 in der Datei realisiert werden?
Da hier ja von TEK00000.WFM bis TEKXXXXX.WFM durchgegangen werden soll?

Kann mir da vielleicht jemand einen TIP geben?

Grüße und schonmal vielen Dank,
Matthias

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Matthias schrieb:
> 1. Wie schreibt man eine Batch-Datei welche die DosBox startet und dann
> noch in der BosBox weiter geht?

Zwei Batchdateien verwenden, die eine ruft Dosbox auf, die andere heißt 
autoexec.bat und steckt in der Dosbox drin.

> 2. Wie kann Schritt 6 in der Datei realisiert werden?

Sieh Dir die Dokumentation des "for"-Befehls von DOS an.


Du kennst das hier?

https://de.tek.com/oscilloscope/tds7054-software/tektronix-windows-oscilloscope-wfm-converter

von Bert3 (Gast)


Lesenswert?

Das kannst du in der dosbox.conf in der autoexec section machen

von c-hater (Gast)


Lesenswert?

Matthias schrieb:

> Jedoch läuft die CNVRTWFM.exe nur in der DOSBOX.

Dann ist die beste und zukunftsfähigste Lösung: Man disassembliert 
diesen Kram, schaut, was es tut und schreibt es neu. Das kann man dann 
für jedes relevante Ziel-OS neu übersetzen.

von Matthias (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Du kennst das hier?
>
> 
https://de.tek.com/oscilloscope/tds7054-software/tektronix-windows-oscilloscope-wfm-converter

Ja, aber dass geht mit den Binärdateien von 4XXer Oszis nicht, ist nur 
für 5xxx/6xxx/7xxx-Modelle.

c-hater schrieb:
> Matthias schrieb:
>
>> Jedoch läuft die CNVRTWFM.exe nur in der DOSBOX.
>
> Dann ist die beste und zukunftsfähigste Lösung: Man disassembliert
> diesen Kram, schaut, was es tut und schreibt es neu. Das kann man dann
> für jedes relevante Ziel-OS neu übersetzen.

Recht hast du, aber da kenn ich mich kaum aus...


Bert3 schrieb:
> Das kannst du in der dosbox.conf in der autoexec section machen

Danke :)
genau danach habe ich gesucht, da man die Autoexec in der Box ja auch 
nicht einfach editieren kann, da ja kein Editor so standardmäßig 
vorhanden ist...

Nun habe ich schonmal dieses:
1
mount C: C:\TDS4XX_Tools\
2
mount A: A:\
3
copy A:\*.* C:\
4
A:
5
del *.*
6
C:
7
for %%i IN (*.WFM) do CNVRTWFM.exe -i -l %%G

Problem ist hier noch die FOR-Schleife, denn die DOSBOX sagt:
1
Illegal command: for.

Wäre wirklich toll wenn jemand noch wüsste wie man eine FOR-Schleife in 
der Dosbox lauffähig macht.
Ich finde dazu leider keine funktionierenden Beispiele...

Ich verwenden die DosBox 0.74-2.

Vielen Dank schonmal :)

von c-hater (Gast)


Lesenswert?

Matthias schrieb:

> for %%i IN (*.WFM) do CNVRTWFM.exe -i -l %%G
>
> Problem ist hier noch die FOR-Schleife, denn die DOSBOX sagt:
>
1
Illegal command: for.

Das standardmäßig in der DOSBOX laufende DOS ist ein stark abgespecktes 
DOS. Das kann vieles nicht, was ein echtes DOS kann. Was es kann, kannst 
du dir mit help /all anzeigen lassen.

Allerdings: Die Zeile hätte auch mit einem richtigen DOS nicht 
funktioniert. Wenn du vorne "%%i" als Laufvariable benutzt, kannst du 
nicht hinten irgendein "%%G" verwenden...

von Matthias (Gast)


Lesenswert?

c-hater schrieb:
> Das standardmäßig in der DOSBOX laufende DOS ist ein stark abgespecktes
> DOS. Das kann vieles nicht, was ein echtes DOS kann. Was es kann, kannst
> du dir mit help /all anzeigen lassen.

Ok, dann ist ein FOR nicht drinn.
Kann ich es irgendwie rein bringen?

Wenn nicht dann reicht es mir auch so:
1
mount C: C:\TDS4XX_Tools\
2
mount A: A:\
3
copy A:\*.* C:\
4
A:
5
del *.*
6
C:
7
CNVRTWFM.exe -i -l TEK00000.WFM
8
CNVRTWFM.exe -i -l TEK00001.WFM
9
CNVRTWFM.exe -i -l TEK00002.WFM
10
CNVRTWFM.exe -i -l TEK00003.WFM
11
CNVRTWFM.exe -i -l TEK00004.WFM
12
CNVRTWFM.exe -i -l TEK00005.WFM

> Allerdings: Die Zeile hätte auch mit einem richtigen DOS nicht
> funktioniert. Wenn du vorne "%%i" als Laufvariable benutzt, kannst du
> nicht hinten irgendein "%%G" verwenden...

Hast recht :)

von c-hater (Gast)


Lesenswert?

Matthias schrieb:

> Ok, dann ist ein FOR nicht drinn.
> Kann ich es irgendwie rein bringen?

Auf YT gibt's ein Video, was zeigt, wie man FreeDOS in die DOSBOX 
installiert.

von Matthias (Gast)


Lesenswert?

c-hater schrieb:
> Auf YT gibt's ein Video, was zeigt, wie man FreeDOS in die DOSBOX
> installiert.

Dass mach ich morgen :)

von Bert3 (Gast)


Lesenswert?

Mach die schleife doch ausserhalb von dosbox

In dosbox nimmst du immer den selben dateinamen fuer die eingabe und 
immer den selben fuer die ausgabe, in der schleife ausserhalb 
kopierst/umbenennst du die entsprechenden dateien

Das mit freedos in dosbox kannst du dir dann sparen

von Matthias (Gast)


Lesenswert?

Nun funktioniert es :)

Ich habe die folgende Konfiguration:
DOSBOX.conf
1
[autoexec]
2
mount A: A:\
3
4
mount C C:\DOSBOX\C -freesize 1024
5
6
if exist C:\DOSBOX.BAT CALL C:\DOSBOX.BAT
7
if exist C:\AUTOEXEC.BAT CALL C:\AUTOEXEC.BAT

AUTOEXEC.BAT
1
...
2
...
3
:END
4
5
A:
6
copy *.* C:\TDS4XX\
7
del *.WFM
8
C:
9
cd TDS4XX
10
FOR %%A IN (*.WFM) do CNVRTWFM.exe -i -l %%A

DOSBOX.BAT (nur zur Installation)
1
@echo off
2
3
SET TZ=EDT
4
5
C:
6
mount E: C:\DOSBOX\E

Bert3 schrieb:
> Mach die schleife doch ausserhalb von dosbox
>
> In dosbox nimmst du immer den selben dateinamen fuer die eingabe und
> immer den selben fuer die ausgabe, in der schleife ausserhalb
> kopierst/umbenennst du die entsprechenden dateien
>
> Das mit freedos in dosbox kannst du dir dann sparen

Stimmt aber da müsste ich die DosBox immer neu starten.

Jedenfalls vielen Dank euch :)

von Matthias (Gast)


Lesenswert?

Noch ein Link auf dass Tool zum Abspeichern von Screenshots...

Beitrag "Re: Screenshots von TDS4XX automatisch abspeichern, mit Python"

Grüße,
Matthias

von georg (Gast)


Lesenswert?

Matthias schrieb:
> Stimmt aber da müsste ich die DosBox immer neu starten.

Nicht du, sondern die for-Schleife. Und keine Angst, die DosBox nutzt 
sich nicht ab bei Gebrauch.

Georg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.