Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Oszilloskop-aber wie anzeigen? (https://www.delphipraxis.net/10876-oszilloskop-aber-wie-anzeigen.html)

Borti 27. Okt 2003 11:15


Oszilloskop-aber wie anzeigen?
 
Hi!
Ich bin grad dabei meinen PC zu einem Oszilloskop auszubauen. Die Datenübernahme über den LPT-Port klappt schon, aber jetzt hapert’s an meinen Programmierkenntnissen. Ich will mir so einen Bildschirm kreieren, wie bei einem echten Oszilloskop. Das heißt, dass meine aktueller Wert am rechten Rand meines Anzeigefeldes eingespeist wird und die vorhergehenden einfach eins nach links verschoben wird und verschwindet, sobald er den linken Rand erreicht. Weiß von euch einer eine Komponente mit der man das ohne viel Aufwand realisieren kann? Ich hab’s schon mal bei TChart versucht, aber das Verschieben der Werte verbraucht zu viele Ressourcen und mein Rechner kommt mit der LPT-Abfrage nicht mehr hinterher (ca. 1000 mal pro Sekunde). Vielleicht hab ich’s auch einfach viel zu kompliziert gemacht. Ich würd’ mich freuen, wenn mir von euch einer helfen könnte.
Ciao,
Borti

Robert Marquardt 27. Okt 2003 11:28

Re: Oszilloskop-aber wie anzeigen?
 
Na da bekommst du immer Schwierigkeiten. Bei 1 Millisekunde fuer alles wird es schwierig fuer Windows.
Lager doch erst mal die Datenerhebung in einen Thread hoher Prioritaet aus.
Die Anzeige kannst du dann langsamer machen. Schneller als 100 Hertz muss es nicht sein, da kaum ein Monitor schneller darstellt.
Fuer die Anzeige koennte man einen xyGraph verwenden, auch wenn der schon ziemlich alt ist und nicht mit Text-DFMs zurechtkommt.

Gandalfus 27. Okt 2003 11:44

Re: Oszilloskop-aber wie anzeigen?
 
Alles mit Tcanvas selber zeichnen. esrat auf ein Hintergrung TBitmap und das das bild auf das Formular kopieren.

Borti 27. Okt 2003 11:56

Re: Oszilloskop-aber wie anzeigen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
so, hier kommt mein Code!
ich hab ihn jetzt noch auf die Schnelle zusammengestöpselt, könnt daher noch Fehler enthalten.
Er kann erstmal nur einen Pin vom LPT abfragen und kennt daher nur die Zustände 1 und 0. Wird noch erweitert, aber will erstmal sehen, ob's überhaupt möglich ist das genze grafisch darzustellen.

teebee 27. Okt 2003 11:57

Re: Oszilloskop-aber wie anzeigen?
 
Verbessere mich, wenn ich falsch liege, meine letzten Oszilloskoperfahrungen liegen etwas zurück...
Eine Komponente kenn ich leider auch nicht...

Ich dachte aber, dass bei einem Oszilloskop der Elektronenstrahl mit einer festen (wählbaren) Frequenz von immer wieder von links nach rechts läuft und über die Spannung am Eingang die Amplitude reguliert wird.

D.h. ein klassisches Oszilloskop schiebt nicht den ganzen Inhalt nach links, sondern übermalt das Bild immer wieder neu, durch das Nachleuchten ensteht bei der richtigen Frequenz dann ein stehendes Bild (bei einem entsprechenden Signal).

Programmiertechnisch könntest Du das (allerdings ohne extra Komponente...) so lösen, dass Du Deinen 'Elektronenstrahl' mit einer bestimmten Geschwindigkeit über Deinen 'Schirm' laufen lässt, und bei jeder neuen x-Position einfach die aktuelle Spannung einliest, und entsprechend Deine Linie zeichnest. Vorher müssen noch die alten Bilddaten gelöscht werden (auf der aktuellen x-Position über die gesamte y-Achse).

Kann ein Speicheroszilloskop den von Dir beschriebenen Effekt? Das würdest Du mit BitBlt(WinAPI) hinbekommen, indem Du den gesamten Bereich Deines Schirms um ein Pixel nach links schiebst, sowas geht im Allgemeinen recht schnell.

Ciao, teebee

Tim.exe 27. Okt 2003 12:17

Re: Oszilloskop-aber wie anzeigen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Liegt das an mir oder an der Demo???

s14 27. Okt 2003 12:45

Re: Oszilloskop-aber wie anzeigen?
 
@tim.exe

An der Demo, da ist der Pfad zur DLL vollständig angegeben :pale:

Borti 27. Okt 2003 16:54

Re: Oszilloskop-aber wie anzeigen?
 
an Robert Marquardt: Was für einen xygraph? Ich kenn nur Chartfx!
an teebee: ich hab jetzt was du gemeint hast mit dem verschieben ausprobiert. klappt soweit ganz gut, aber wie krieg ich da jetzt mein Coordinatensystem rein? ird da bitmap nicht immer größer, da ich es zwar über den rand der form hinausschiebe, aber den überstehenden bereich nicht abschneide?(du hattest recht mit deinen Oszi! wie ein speicheroszi aussieht- keine Ahnung! war mir zu teuer, daher mach ich's mir ja selbst)

Kann mir einer mal ein gutes Tutorial zu bitmaps, canvas etc. verraten? (Das ist mein erster versuch auf diesem gebiet)
Danke, Borti

InSys 27. Okt 2003 21:41

Re: Oszilloskop-aber wie anzeigen?
 
Hi Borti!
Schau mal Bei den TMS-Kompo's
unter www.tmssoftware.com nach, ob da was brauchbares dabdei ist.

teebee 28. Okt 2003 07:19

Re: Oszilloskop-aber wie anzeigen?
 
Um zu verhindern, dass das Bild über den Rand hinausgeschoben wird, wählst Du als zu verschiebenden Ausschnitt nicht das komplette Bild, sondern lässt die linke Pixelspalte weg. Diesen um eine Spalte schmaleren Ausschnitt verschiebst Du nun um eine Spalte nach links, löschst die rechte Spalte und kannst dort neu zeichnen.

Ciao, teebee

Borti 28. Okt 2003 08:59

Re: Oszilloskop-aber wie anzeigen?
 
Hi!
vaon neuen kompos halt ich nichts. Hab schon diverse böse überraschungen erlebt, wo ich komplett delphi neuinstallieren musste und selbst das ging nicht einwandfrei)

Die Methode mit BitBlt siet echt vielversprechend aus, aber ich hab immer noch probleme mit dem koordinatensystem. Wie kann ich eins zeichnen, dass nicht mit verschoben wird?

Mir ist noch eine andere Idee gekommen: Gibt es denn nicht so etwas ähnliches, wie es Exel benutzt? in Exel hab ich ja meine tabelle und den graphen, der sich die Daten aus der Tabelle saugt. Sobald ich in der Tabelle etwas veränder wird diese Änderung mit in den Graphen übernommen. Mir schwebt sowas vor wie ein Memo oder Stringgrid, indem ich die Daten verschieb und dem Graphen nur noch den Befehl zum Updaten geb und fertig. Sieht da vielleicht einer von euch eine Möglichkeit?

Ciao,
Borti

teebee 28. Okt 2003 15:18

Re: Oszilloskop-aber wie anzeigen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal ein kleines Test-Oszilloskop gemacht. Schau es Dir mal an, hab den Quelltext kommentiert.

Das Programm benutzt eine Bitmap für den eigentlichen Graphen, eine für das Koordinatenkreuz, einen BackBuffer (auch eine Bitmap) auf den beides zusammen kopiert wird und eine Paintbox für die Ausgabe des Backbuffers.

Ciao, teebee

Tonic1024 28. Okt 2003 15:33

Re: Oszilloskop-aber wie anzeigen?
 
Moin...

Das mit dem Osszi finde ich unglaublich spannend... Aber wie soll das mit der Abtastfrequenz funzen?

Ein Osszi (kein TOP-Modell) macht locker 30 MHz. Heisst doch der Rechner muss bis zu 30.000.000 mal pro Sekunde einen Spannungswert ermitteln.

Die TTimer Komponente schafft bis zu eine Millisekunde (Windows aber nicht, oder???), das entspricht doch so circa 1000 Werte pro Sekunde - umgerechnet 1 KHz, oder irre ich mich..? Das liegt im Frequenzbereich eines tiefen Mitteltöners bis Kickbass (Hifi-NF).

Ist nicht besonders viel, aber die Idee finde ich einfach Klasse...

Damit kommen wir wieder zum Thema Speicher-Osszi. Wie auch immer die Werte in den Paralell-Port gelangen, dort müssen Sie gespeichert werden und zwar mindestens eine Millionen mal pro Sekunde. Dann hätte Windows alle Zeit der Welt um diesen Speicher auszulesen und ein Bild davon zu machen. Wenn man diese Werte dann noch bearbeitet, sollte es doch möglich sein eine Art Mittelwert zu berechnen und quasi "Live" darzustellen...

Das geht aber eindeutig in die Kategorie externer Berechnung, und da habe ich leider nicht viel Plan von...

Das soll dich aber auf garkeinen Fall von deinem Vorhaben abbringen, Borti... im Gegenteil. Ich finde die Idee gut...

Borti 29. Okt 2003 18:16

Re: Oszilloskop-aber wie anzeigen?
 
hi!
das oszi.zip funktioniert einwandfrei! danke! ich werd vielleicht noch mal später darauf zurückkommen, da ich jetzt erstmal den rest des programms, ein geeignetes koordinatennetz etc. erstellen muss. wenn euch das oszi so gut gefällt, kann ich ja auch mal wenn's fertig ist ein tutorial schreiben.(dauert aber noch ein bischen-ca bis weinachten :lol: )
Tschu,
Borti


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz