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.
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
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?
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
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.
> 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
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
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
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?
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
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
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
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!
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
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
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.
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
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
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.
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
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?
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:
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
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
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