Forum: PC-Programmierung Hameg HM2008 Display Dump


von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Ich habe für mein Hameg HM2008 CombiScope eine Bildschirmfoto-Funktion 
programmiert, die ich auch in mein Programm 'Messinstrumente' einbauen 
will. Ich habe das Programm vor einiger Zeit hier im Forum vorgestellt.
Hameg hat das Tool 'Hameg Screen Copy', das die Bildschirmdaten direkt 
ausliest und anzeigt, Beispielbild 'Hameg Screen Copy.png'. Ich habe 
jetzt die Daten soweit verstanden, dass ich fast alles darstellen kann, 
Beispielbild 'HM2008-Display-Dump.png'.

Ein Problem habe ich noch mit der Position für die Math- und 
Referenzkanäle. Ich habe keine Idee mehr, vielleicht bin auch nur 
'betriebsblind'.
Es geht um die vertikale Positionierung, die nicht stimmt. Die 
Bildschirmfläche ist 2.000 x 2.000 Punkte, die Samples sind 8 Bit, also 
je 256 Werte, und die 'Referenzwerte', so nenne ich sie, beziehen sich 
auf 2.048, was sozuagen der Null-Punkt für das Zeichnen der Daten ist.

Es gibt in den Daten Referenz-Pakete mit X- und Y-Werten, die sich aber 
nie ändern. Es sind immer 0x8800 (34.816) für X, und 0x0800 (2.048) für 
Y.
Bei allen Daten die gezeichnet werden, Kanäle, Beschriftung, Cursor usw. 
gibt es ebenfalls Positionswerte. Im Code-Beispiel unten, sind es die 
zweiten und dritten Word-Daten in den eckigen Klammern. In den runden 
Klammern folgen die Daten, erstes Byte Richtung, zweites Byte Schritt 
oder Sample-Wert.
1
Referenz
2
[05 40] [88 00] [08 00] (C8 FC)
3
Kanal 1
4
[05 A7] [88 00] [08 00] [30 01 02 01] [04 80] (18 81) (A0 7F) (A0 83) (A0 7F) (A0 83) ...
5
Math 1
6
[05 A7] [88 00] [0F 9C] [30 01 02 01] [04 80] (18 AC) (A0 AB) (A0 AD) (A0 A9) (A0 AF) ...

Die Beispielbilder 'Math/Math-1/2-Fehler.png', 'Ref/Ref-1-Fehler.png' 
zeigen im s/w-Bild die richtige Position an, die anderen wie ich sie im 
Moment zeichne. Es werden die Sample-Werte gespiegelt und mit 4 Pixel 
multipliziert für die Bildgröße: rPlotY = (($FF - iY) * #Pixel)
Das funktioniert mit allen Kanälen, bis auf Math- und Referenz. Im Bild 
'Werte.png' habe ich eine Montage der Bilder gemacht, mit den vertikalen 
Y-Werten.

Vielleicht hat jemand eine Idee wie man den 'Y-Offset' verwenden muss.

Peter

von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Das Problem ist gelöst, anscheinend war das Schreiben der Frage heilsam. 
Ich habe eine Berechnung für die Beschriftung (Readout) gemacht, und die 
muss ich auch für die Kurvendaten machen. Es  hat halt bisher ohne 
funktioniert, wobei für die Logikdaten habe ich es schon gemacht.
1
; Die Y-Werte spiegeln, aber pro Bildhälfte extra, über der Nullposition und unterhalb.
2
iCalc = ((#DisplayHeight / 2) - (iDataY - iRefY))
3
If (iCalc >= 0)
4
  ; Obere Hälfte.
5
Else
6
  ; Untere Hälfte.
7
  iCalc + #DisplayHeight + 1050  ; TODO - wie kommen die 1050 zustande?
8
EndIf

Peter

von APW (Gast)


Lesenswert?

Weisst du zufällig, ob man beim HM2008 auch den kompletten 
Samplespeicher auslesen kann, oder nur den Bildschirmspeicher?

von Peter D. (fenstergucker)


Lesenswert?

Man kann die 2 MB pro Kanal auslesen mit ':TRACe:DATA?'. Es gibt ein 
SCPI Programmierhandbuch für die Instrumente HM1000x, HM1008x, HM1500x, 
HM1508x,  HM2005-2, HM2008.

Edit: Mit dem Hameg Screen Copy-Tool kannst du auch die Daten einlesen.

Peter

: Bearbeitet durch User
von Hmmm (Gast)


Lesenswert?

Peter D. schrieb:
> Ich habe eine Berechnung für die Beschriftung (Readout) gemacht, und die
> muss ich auch für die Kurvendaten machen.

Veröffentlichst Du den Code, wenn das fertig ist? Hameg scheint ja 
einiges nicht dokumentiert zu haben.

APW schrieb:
> Weisst du zufällig, ob man beim HM2008 auch den kompletten
> Samplespeicher auslesen kann, oder nur den Bildschirmspeicher?

Kann man, habe ich auch schon gemacht. Dauert allerdings ewig, weil auch 
das USB-Interface nur ein FT232 ist, der mit (wenn ich mich recht 
erinnere) 115.2 kbps mit dem Oszi kommuniziert.

von Olaf (Gast)


Lesenswert?

> Veröffentlichst Du den Code, wenn das fertig ist? Hameg scheint ja
> einiges nicht dokumentiert zu haben.

Ich hab mir vor einiger Zeit auch mal was selbst geschrieben um meinen 
HMO2022 fernsteuern und auslesen zu koennen. Nach meiner Erfahrung ist 
die Doku von Hameg nicht immer die allerbeste und vollstaendigste. 
Allerdings hat deren Entwickler wohl gerne aus alten Projekten kopiert. 
Es lohnt sich daher auch mal die Beschreibungen anderer Hameggeraete zu 
lesen und deren Kommandos auszuprobieren.

So hab ich z.B diese Erkenntnis gewonnen nachdem ich das 
Programmierhandbuch
eines Spektrumanalyzers von Hameg gelesen habe:  .-)

//Die gelesenen Hameg-Daten sind BMP wenn man die ersten 8Bytes 
wegwirft.
Screenshot.loadFromData(SerialDevice->ScreenData.mid(8),"BMP");

Olaf

von APW (Gast)


Lesenswert?

Muss man dann die ganzen 2MS komplett entgegen nehmen oder kann man auch 
selektiv z.B. nur die mittleren 50 kS auslesen?

von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Anbei ist ein Programm mit dem die 'Display Dump'-Daten angezeigt werden 
können. Für den Test auch einige Daten von meinem HM2008.

Peter

von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Ich habe das Test-Programm aktualisiert. Bei meinen Tests sehe ich keine 
Fehler mehr. Nur die Cursor stimmen ganz außen am Rand, nicht mit dem 
Oszilloskop überein. Man kann sie nicht soweit zum Rand bewegen, wie sie 
mit den Display Dump-Daten angezeigt werden.

Peter

von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Hier ist die letzte Version, einige kleine Anpassung habe ich noch 
vorgenommen. Beim Hameg Screen Copy-Tool gibt es ebenfalls leichte 
Unterschiede vom Bild und Oszilloskop.
Wer eine Netzwerkverbindung am HM2008 hat, kann auch mein Programm 
verwenden:
https://peter.dreisiebner.at/messinstrumente/
Ich möchte noch die serielle Verbindung programmieren, wird aber noch 
dauern.

Peter

von Ludwig K. (hellas)


Lesenswert?

Peter D. schrieb:
> Ich möchte noch die serielle Verbindung programmieren, wird aber noch
> dauern.

Wäre es dann möglich, einen alten Hameg 407-2 damit zu steuern?
(der mit dem Digitalteil) oder geht das grundsätzlich nicht?

: Bearbeitet durch User
von Peter D. (fenstergucker)


Lesenswert?

Ludwig K. schrieb:
> Wäre es dann möglich, einen alten Hameg 407-2 damit zu steuern?
> (der mit dem Digitalteil) oder geht das grundsätzlich nicht?

Ich kenne das HM407 nicht, aber ich habe mir die Dokumentation zum 
HO79-6 Interface angeschaut, das anscheinend verwendet wird.
Es werden SCPI-Kommandos verwendet und das sollte mit der seriellen 
Verbindung funktionieren.
Im Moment funktioneren bei meinem Programm aber nur die SCPI-Kommandos 
und Bildschirmfotos. Eine Fernsteuerung gibt es noch nicht, nur eben das 
Senden und Empfangen von SCPI-Kommandos.

Ich werde wahrscheinlich morgen fertig, mit einer neuen Version wo die 
serielle Verbindung verfügbar ist. Fertig ist es schon, ich teste gerade 
mit meinen Instrumenten.
Du kannst ja dann versuchen, ob du eine Verbindung herstellen, und 
SCPI-Kommandos senden und empfangen kannst.

Peter

von Peter D. (fenstergucker)


Lesenswert?

Ich habe die neue Version hochgeladen. Es wird sicher noch Fehler geben, 
vorallem beim Senden habe ich nur mit wenigen Daten getestet. Beim 
Einlesen der Display Dumps vom HM2008 gibt es keine Probleme.

Peter

von Marek N. (Gast)


Lesenswert?

Moin,

ich habe ein HM 1507-3 mit RS232 und wäre bereit, gegenzutesten.

Beste Grüße, Marek

von Peter D. (fenstergucker)


Lesenswert?

Marek N. schrieb:
> ich habe ein HM 1507-3 mit RS232 und wäre bereit, gegenzutesten.

Du kannst die Konfigurationsdatei 'hameg_hm2008.ini' im Verzeichnis 
'Instrument' kopieren und umbenennen. Der Name ergibt sich aus der IDN, 
Herstellername und Modell. Leerzeichen werden durch Unterstriche 
ersetzt. Dann könnte auch das Bildschirmfoto funktionieren.

Peter

von Ludwig K. (hellas)


Lesenswert?

Ich habe in meinem privaten SW-Archiv noch zwei PDFs gefunden, die sich 
inhaltlich mit den Interface Commands auseinandersetzen.

PDF 1 (aus 2003):
Valid for oscilloscopes:
HM305-2, HM404, HM404-2, HM407, HM1004-2, HM1004-2A, HM1004-3, HM1505-2, 
HM1507, HM1507-2, HM1507-3, HM2005

PDF 2 (aus 2005):
Valid for oscilloscopes:
HM504, HM504-2, HM507

Die alte Version SP107E_v302 (aus 2009) fand sich ebenfalls.
Falls das irgendwie von Interesse sein sollte.

Bei Interesse bitte PN an mich.
Bitte E-Mailadresse mitsenden!

: Bearbeitet durch User
von Marek N. (Gast)


Lesenswert?

Hallo Peter,

ich konnte mich am WE endlich wieder mit dem 1507 beschäftigen.
Ich habe ein XP-Laptop mit Prolific PL2303 USB-RS232-Adapter. Damit 
funktioniert die original Hameg-Software SP107E V302 (aus dem 
Polen-Forum).

Habe versucht, dann deine Messinstrumente v0.2.3.38 zu verwenden, aber 
ich kann mich leider nicht zum Scope verbinden.

Als Kommunikationsparameter verwende ich:
  No parity, data length 8 bits, 2 stop bits, RTS/CTS handshake. (wie in 
dem von Ludwig zitierten PDF-1)
Leider ohne Erfolg.

Die Tests auf dem Win10-Laptop musste ich leider abbrechen, da der pöhse 
Prolific-Treiber nicht richtig funktionieren will trotz Workaround [1].
Dort krieg ich weder Hammer-Term, noch SP107E noch deine Software zur 
Kommunikation :-(

[1] Beitrag "Re: PL2303_Prolific unter Windows 10"

@Ludwig: Ich hätte noch Interesse an der "PDF 2 (aus 2005)" zur 
Vervollständigung meines Archivs. Mail: db1bmn ät gmx.de

von Peter D. (fenstergucker)


Lesenswert?

Die Baud-Rate mit 19.200 stimmt?
Ich sende kein 'SPACE CR' wie im Handbuch steht, vielleicht liegt es 
daran. Steht etwas im Log, Menü 'Hilfe' ->- 'Log...'?

Peter

von Marek N. (Gast)


Lesenswert?

Hi, danke für die schnelle Antwort!

Eben mal angetestet (immer unter XP):
19200 ist das, was die SP107-Software per Autodetect ausgehandelt hat.

Hier mal das Log:
1
0000 [19:02:19] The log will be cleared after 10.000 lines.
2
0000 [19:02:19] ------------------------------------------------------------
3
0001 [19:02:19] Preferences file: C:\Dokumente und Einstellungen\*zensiert*\Desktop\!_tmp\Messinstrumente v0.2.3.38\Messinstrumente v0.2.3.38\32\Resources\config.ini
4
0002 [19:02:19] Language file: C:\Dokumente und Einstellungen\*zensiert*\Desktop\!_tmp\Messinstrumente v0.2.3.38\Messinstrumente v0.2.3.38\32\Resources\english.ini
5
0003 [19:02:19] LibUsb version: 1.0.23.11397 http://libusb.info
6
0004 [19:02:19] Found network adapters:
7
0005 [19:02:19] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
8
0006 [19:02:19] 2.  0.0.0.0  LAN-Verbindung
9
0007 [19:02:19] The search for USBTMC instruments was started.
10
0008 [19:02:20] The search for USBTMC instruments is finished.
11
0009 [19:02:43] Found network adapters:
12
0010 [19:02:43] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
13
0011 [19:02:43] 2.  0.0.0.0  LAN-Verbindung
14
0012 [19:02:43] The search for USBTMC instruments was started.
15
0013 [19:02:44] The search for USBTMC instruments is finished.
16
0014 [19:02:55] Error: The IDN could not be determined.
17
0015 [19:02:55] Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS

"The IDN could not be determined" kommt kurz nachdem man auf 'Connect' 
klickt.

von Peter D. (fenstergucker)


Lesenswert?

Marek N. schrieb:
> "The IDN could not be determined" kommt kurz nachdem man auf 'Connect'
> klickt.

Das ist jetzt kein Fehler, sondern so gewollt.
Ich benötige die IDN im Programm, um die richtigen Funktionen 
anzuzeigen. Ich frage mit dem SCPI-Kommando die '*IDN?' ab. Kannst du 
mit deinem Programm das Kommando senden und die Ausgabe zeigen?

Ich bin mir sicher, dass ich auch das Terminierungszeichen 0x0A am Ende 
mitsende.
Ansonst kannst du auch eine E-Mail schreiben, dann kann ich dir eine 
Debugversion senden.

Peter

von Marek N. (Gast)


Angehängte Dateien:

Lesenswert?

Sou..., cool!

Ich hab mich mal mitm Terminal ans Scope dran gehängt: 19k2 8N2 RTS/CTS

Senden von <SPACE> schaltet das Scope in den Remote-Modus

'*IDN?' bringt das Scope zum Piepen, es zeigt auf der CRT "ERROR: 01" an 
es sended '1' zurück. Laut Manual PDF 1 (aus 2003) muss es lauten 'ID?' 
sein.
Dann antwortet das Scope mit seiner Modellnummer und Version. Siehe 
Screenshot vom Terminal.

Ich weiß leider nicht, wo ich diesen Befehl in die ini-Datei eintragen 
soll.

von Peter D. (fenstergucker)


Lesenswert?

Ich bin davon ausgegangen, dass immer das '*IDN?'-Kommando vorhanden 
ist. Man kann es auch nicht in einer ini-Datei ändern.
Aber ich sehe gerade, in dem Hameg Programmierhandbuch das ich verwende, 
kommen nur die Instrumente HM1000x, HM1008x, HM1500x, HM1508x, HM2005-2 
und HM2008 vor.
Ich dachte das HM1507 ist auch dabei. Mit den älteren Modellen kenne ich 
mich nicht aus.

Ich habe dir eine Version mit 'ID?' bereitgestellt, vielleicht 
funktioniert die Verbindung. Es wird dann aber sicherlich nur die 
SCPI-Kommando-Funktion funktioneren.

https://peter.dreisiebner.at/messinstrumente/Messinstrumente%20v0.2.3.42%20-%20HM1507.zip

Peter

: Bearbeitet durch User
von Marek N. (Gast)


Lesenswert?

Hi Peter,
Danke! Leider negativ. Die selbe Fehlermeldung wie zuvor "The IDN could 
not be determined".

Ich fürchte, der Fehler liegt aber schon davor, da das Scope nicht in 
den Remote-Modus wechselt. Vermutlich erkennt es das <SPACE> nicht?

von Peter D. (fenstergucker)


Lesenswert?

Ich habe das Programm aktualisiert, und sende jetzt vorher ein 
Leerzeichen.

Peter

von Marek N. (Gast)


Lesenswert?

Nachtrag 1: So ich habe jetzt ein bisschen getrixt und habe das Scope 
vorher mit dem Terminal auf Remote gestellt mittels Leerzeichen. Dann 
kann  ich mich connectieren:
1
0003 [20:55:31] LibUsb version: 1.0.23.11397 http://libusb.info
2
0004 [20:55:31] Found network adapters:
3
0005 [20:55:31] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
4
0006 [20:55:31] 2.  0.0.0.0  LAN-Verbindung
5
0007 [20:55:31] The search for USBTMC instruments was started.
6
0008 [20:55:32] The search for USBTMC instruments is finished.
7
0009 [20:55:40]  (COM): Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS
8
0010 [20:55:40] Connect to the instrument:  (COM)
9
0011 [20:55:40] Error:  - No configuration available. >id:hm1507-3__v01_.ini<
10
0012 [20:55:40]  (COM): connected

Nachtrag 2: Mit dem neu kompilierten Programm leider ebenfalls negativ:
1
0003 [21:00:52] LibUsb version: 1.0.23.11397 http://libusb.info
2
0004 [21:00:52] Found network adapters:
3
0005 [21:00:52] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
4
0006 [21:00:52] 2.  0.0.0.0  LAN-Verbindung
5
0007 [21:00:52] The search for USBTMC instruments was started.
6
0008 [21:00:53] The search for USBTMC instruments is finished.
7
0009 [21:01:18] Found network adapters:
8
0010 [21:01:18] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
9
0011 [21:01:18] 2.  0.0.0.0  LAN-Verbindung
10
0012 [21:01:18] The search for USBTMC instruments was started.
11
0013 [21:01:19] The search for USBTMC instruments is finished.
12
0014 [21:01:26] Error: The IDN could not be determined.
13
0015 [21:01:26] Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS
14
0016 [21:01:35] Error: The IDN could not be determined.
15
0017 [21:01:35] Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS

Nachtrag 3:
Mit dem neu compilierten Programm und Leerzeichen vorher im Terminal 
senden geht es wieder:
1
0003 [21:00:52] LibUsb version: 1.0.23.11397 http://libusb.info
2
0004 [21:00:52] Found network adapters:
3
0005 [21:00:52] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
4
0006 [21:00:52] 2.  0.0.0.0  LAN-Verbindung
5
0007 [21:00:52] The search for USBTMC instruments was started.
6
0008 [21:00:53] The search for USBTMC instruments is finished.
7
0009 [21:01:18] Found network adapters:
8
0010 [21:01:18] 1.  192.168.2.114  Drahtlose Netzwerkverbindung
9
0011 [21:01:18] 2.  0.0.0.0  LAN-Verbindung
10
0012 [21:01:18] The search for USBTMC instruments was started.
11
0013 [21:01:19] The search for USBTMC instruments is finished.
12
0014 [21:01:26] Error: The IDN could not be determined.
13
0015 [21:01:26] Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS
14
0016 [21:01:35] Error: The IDN could not be determined.
15
0017 [21:01:35] Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS
16
0018 [21:02:57] The data was saved in the file: X:\Messinstrumente_2020-10-28.txt.txt.txt.txt
17
0019 [21:03:23]  (COM): Port: COM1, Speed: 19.200, Data bits: 8, Stop bits: 2, Parity: None, Flow control: RTS/CTS
18
0020 [21:03:23] Connect to the instrument:  (COM)
19
0021 [21:03:23] Error:  - No configuration available. >id:hm1507-3__v01_.ini<
20
0022 [21:03:23]  (COM): connected

von Peter D. (fenstergucker)


Lesenswert?

Ich habe das Programm nochmals aktualisiert, und warte ein Sekunde nach 
dem Senden des Leerzeichens. Ansonst weiß ich nicht wo der Fehler sein 
könnte.

Peter

von Marek N. (Gast)


Lesenswert?

Leider kein Erfolg.

Beim neusten Programm schaltet das Scope ebenfalls nicht auf Remote, 
sondern Piept nur (aber keine Error-Message auf der CRT).

Wenn ich vorher mit dem Terminal auf auf Remote schalte, kann es 
ebenfalls nicht die IDN lesen.

Sonst müssen wir da mal bei Gelegenheit systematisch rangehen.

Beste Grüße und vielen Dank für die Mühen!
Marek

von Peter D. (fenstergucker)


Angehängte Dateien:

Lesenswert?

Ich habe das Programm für das Anzeigen des Bildschirmspeichers auf den 
aktuellen Stand gebracht. Es sollte jetzt alles richtig angezeigt 
werden. Es gab noch Fehler beim Servicemenü, da hat eine Linie gefehlt. 
Und bei den Logikkanälen konnte ich die vier roten Grundlinien 
entfernen.
Über einen Rechtsklick und dem Kontextmenü, kann man die Bildgröße, 
Farbe oder S/W, usw. ändern.

Peter

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.