![]() |
Gauge Refresh-Probleme
Hallo,
ich pflege ein Programm, in dem 6 Messwerte, die sich im 0,3 Sek. Takt verändern in 6 Gauges dargestellt werden. Ich habe hier 2 Probleme: 1. Nach der Werteänderung wird der Gauge-Refresh gelegentlich nicht durchgeführt (Gauge wird in komplementären Farben dargestellt - statt blau auf weiß kommt gelb auf schwarz). 2. Ebenfalls gelegentlich (selten) kommt es zu einem Grafik-Fehler (das Lesethread der Messwerte wird damit beendet). Ist ähnliches Problem jemandem bekannt? Was kann man tun um die Änderungen aller 6 Gauges gleichzeitig darzustellen? Gauge, wie auch das Vater-Objekt TGridPanel, kennen die Prozeduren "BeginUpdate-EndUpdate" leider nicht... Ein Refresh des TGridPanel nach jedem Schleifendurchgang ist möglich und hilft, verursacht aber ein unschönes flackern des Blides. Ausserdem es hilft bei den Grafikabbrüchen nicht weiter. Das Problem mit den Abbrüchen sieht auf verschiedenen Rechnern unterschiedlich aus - ich vermute ein Zusammenhang mit der Qualität des Grafiktreibers. Das Bisschen "Rechteckzeichnen" sollte aber doch in Wirklichkeit kein Anspruch für die Grafik des Rechners darstellen... Gruß Andreas |
AW: Gauge Refresh-Probleme
|
AW: Gauge Refresh-Probleme
Hallo,
Zitat:
Keine Zugriffe auf die VCL aus einem Thread heraus - außer Synchronized o.ä. :warn: Gruß, Chris [EDIT] Welches Betriebssystem verwendetst du? [/EDIT] |
AW: Gauge Refresh-Probleme
Oh,
willkommen in der DP :dp: |
AW: Gauge Refresh-Probleme
Zitat:
|
Qu
Das ist in der Tat schlecht, da die VCL nicht threadsafe ist. Ein Zugriff aus einem TThread heraus auf VCL-Komponenten darf nur über
![]() |
AW: Gauge Refresh-Probleme
Zitat:
Die VCL ist nicht threadfest - das ist kein Geheimnis. Also musst du deine Software ändern, dann sollten die Probleme verschwinden :-D Zitat:
|
AW: Gauge Refresh-Probleme
Einleuchtend!
Danke :wink: |
AW: Gauge Refresh-Probleme
Hallo,
Zitat:
Die VCL ist nicht Threadsave und sollte nur vom Hauptthread "benutzt" werden. [ROTER KASTEN -> Mist DeddyH war schneller] Entweder Synchronized aufrufe wie DeddyH empfiehlt, oder die speicherst den Wert in einem Puffer und schickst der Application / dem MainForm per PostMessage eine Nachricht, dass neue Werte da sind. Diese kann die Werte dann aus dem Puffer abholen und darstellen. Welche variante du nimmst hängt meines erachtens davon ab, ob der USB-Thread zeitkritisch ist oder nicht. Wenn er so schnell wie möglich wieder zum "USB-Lesen" übergehen soll, würde ich die Puffer-Variante nehmen. Gruß, Chris [EDIT] Mist, war viel zu langsam :-( [/EDIT] |
AW: Gauge Refresh-Probleme
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz