Einzelnen Beitrag anzeigen

DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Jobliste Kommunikation mit externem Gerät

  Alt 21. Nov 2006, 09:03
Hallo erstmal super vielen Dank @Reinhard Kern und @Der_Unwissende !!!

@Reinhard Kern:
Das mit der Statusmaschine ist mir leider nicht so ganz klar geworden wie ich soetwas umsetzte


@Der_Unwissende
Danke für deine ausführliche(n) Antwort(en)!!

Nunja ich weiss ehrlich gesagt nicht wie ich so eine Jobliste erstellen soll.
TObjectlist ist ja eine Klasse, die Zeiger speichert, sehe ich doch richtig, oder?

Wenn ich nun meiner Objektliste vom Typ TObjeclist eine Funktion übergeben will, wie mache ich dass denn?
Objekliste.Add(Set_Serialnumber('SeriennummerXYZ'));

Ich habe es zurzeit recht statisch gelöst, aber bin nicht sehr glücklich drüber.

Mein Thread arbeitet statische Lese Methoden ab, je nach Parameter, den ich von aussen vorgebe.

Wenn ich dann eine Schreiboperation abgebe, dann stoppe ich den Thread vorher und lasse ihn dann weiterlaufen. (Dass finde ich sehr unschön)

folgenden Thread-Code habe ich bisher:

Delphi-Quellcode:
procedure TWorkThread.Execute;
(* ----------------------------------------- *)
var
  com: Integer;
  Identifier: Integer;
  I: Integer;
begin
  { Thread-Code hier einfügen }
// FSTKObj.OnCommunicate:=UpdateCaption;
  isStopped:=false;
  FSTKObj.Get_Device_Identify (Identifier);
{ TODO : LÖSCHEN }
  Identifier:=1000;
  while NOT(Terminated) do
  begin
    fCS.Enter;
      LeseZyklischeDaten;
    fCS.Leave;

  case FCommand of
    STOPP_THREAD:
      begin
        isStopped:=true;
        Self.Suspend;
// isStopped:=false;
      end;
    READ_HERSTELLERDATEN :
      begin
        Synchronize(ZeigeSandUhr);
        LeseStammdaten;
        Synchronize(UpdateStammdaten);
        if ((FSTKObj.IsMulti) or (FSTKObj.IsMaster)) then
        begin
          fCS.Enter;
          LeseStammdatenMaster;
          Synchronize(UpdateStammdatenMaster);
          fCS.Leave;
        end;
        Synchronize(VersteckeSandUhr);
      end;
    READ_ANALOGOUT :
      begin
        fCS.Enter;
        FSTKObj.Set_CalConfig(false);
        try
          fCS.Enter;
          FSTKObj.Set_CalibDaten(frmMain.editKalibrierwert.Value);
          fCS.Leave;
        except
          fCS.Leave;
          FSTKObj.Set_CalibDaten(0);
        end;
....
Abhängig von FCommand führe ich meine Lesebefehle aus.

Aber ich will ja so eine schöne Jobliste,
der ich auch Schreiboperationen mit Parameter übergabe aus dem Hauptthread übergeben kann.

Vielleicht kannst du mir ja mal ein Code Schnippsel schreiben, wäre super, stehe nämlich ganz schön aufm Schlauch.

DANKE!!!
  Mit Zitat antworten Zitat