AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread erstellen

Ein Thema von meg91 · begonnen am 31. Aug 2006 · letzter Beitrag vom 3. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Thread erstellen

  Alt 1. Sep 2006, 12:37
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;
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#12

Re: Thread erstellen

  Alt 1. Sep 2006, 12:58
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
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Thread erstellen

  Alt 1. Sep 2006, 13:16
nein, weil ich habe für jeden Thread eigene Variabelen
ich hab ja nur einen Thread gepostet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#14

Re: Thread erstellen

  Alt 1. Sep 2006, 13:27
Die Threads greifen aber alle auf die selbe Schnittstelle zu?
(wenn auch auf verschiedene Pin)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Thread erstellen

  Alt 1. Sep 2006, 14:12
Ja tun sie
stimmt is mir noch gar nicht bewusst gewesen
kann es daran liegen, dass gar nix an den Ausgängen passiert?
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#16

Re: Thread erstellen

  Alt 1. Sep 2006, 16:28
durchaus möglich .. probiers doch mal mit nur einem Thread .. wenns dann geht dann ist es ja klar.
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Thread erstellen

  Alt 1. Sep 2006, 16:44
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#18

Re: Thread erstellen

  Alt 1. Sep 2006, 17:53
PWM über 'nen arschlangsamen Port?

da kommst du einfacher, wenn du einfach nur 'nen IC ansteuerst (Digitaler Wiederstand, oder PWM-Generator...)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Thread erstellen

  Alt 3. Sep 2006, 15:47
ich habs aber schon mit einem Port versucht und da gehts wunderbar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 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