![]() |
Re: Thread erstellen
Ich hab mich gestern und heute nochmal intensiv durch eure Vorschläge und Codes durchgearbeitet und ich habs tatsächlich geschafft 3 Threads zum laufen zu bringen
ich hab das ganze auch einfach mit 3 Variabelen die jeweils von einem Thread hochgezählt werden und es hat auch supi funktioniert nur wie ich den LPT-Portzugriff eingebaut hab (ich versuche nämlich auf 3 DigiPorts vom LPT ein pulsweitenmoduliertes Signal auszugeben) hatte ich den eindruck, dass mein Programm gar nix mehr macht :-(
Delphi-Quellcode:
uses
HW_Types, HW_32; [...] var b_LED1_1 : Byte; b_LED1_2 : Byte; b_LED1_on : Byte; b_max: Byte = 40; aThreads : TList; implementation {$R *.DFM} uses SyncObjs; Type T_LED1_Thread = Class (TThread) Private fID : Integer; Protected Constructor Create (aID : Integer); Procedure Execute;Override; End; constructor T_LED1_Thread.Create(aID : Integer); begin Inherited Create (True); fID := aID; Resume; end; procedure T_LED1_Thread.Execute; begin While not Terminated do begin for b_LED1_1 := 0 to b_LED1_on do MainForm.HW32.Pin[2] := false; //not true if (b_max - b_LED1_on) > 0 then for b_LED1_2 := 0 to b_LED1_on do MainForm.HW32.Pin[2] := true; //not false Application.ProcessMessages; end; end; procedure TMainForm.B_OpenDriverClick(Sender: TObject); begin aThreads := TList.Create; T_LED1_Thread.Create(0); end; procedure TMainForm.FormDestroy(Sender: TObject); Var i : Integer; begin While aThreads.Count > 0 do begin With T_LED1_Thread (aThreads[0]) do begin WaitFor; Free; End; aThreads.Delete(0); End; aThreads.Free; end; |
Re: Thread erstellen
Hi,
Bist du sicher das die Threads nicht zugleich auf die Variablen b_LED1_1 und b_LED1_on .. usw zugreifen ? Sowas solltest du entweder mit Syncronize oder locks machen :warn: |
Re: Thread erstellen
nein, weil ich habe für jeden Thread eigene Variabelen
ich hab ja nur einen Thread gepostet |
Re: Thread erstellen
Die Threads greifen aber alle auf die selbe Schnittstelle zu?
(wenn auch auf verschiedene Pin) |
Re: Thread erstellen
Ja tun sie
stimmt is mir noch gar nicht bewusst gewesen kann es daran liegen, dass gar nix an den Ausgängen passiert? |
Re: Thread erstellen
durchaus möglich .. probiers doch mal mit nur einem Thread .. wenns dann geht dann ist es ja klar.
|
Re: Thread erstellen
aber ich wills doch in 3 threads laufen lassen, sonst ist doch das ganze sinnlos
meine Absicht war ja die Pulsweitenmodulation auf allen 3 Ports gleichzeitig laufen zu lassen, weil ich damit eine RGB-LED laufen lassen will |
Re: Thread erstellen
PWM über 'nen arschlangsamen Port? :stupid:
da kommst du einfacher, wenn du einfach nur 'nen IC ansteuerst (Digitaler Wiederstand, oder PWM-Generator...) |
Re: Thread erstellen
ich habs aber schon mit einem Port versucht und da gehts wunderbar
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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-2025 by Thomas Breitkreuz