Synaser: Problem bei TBlockserial.create

Rund um die LCL und andere Komponenten
Antworten
Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Synaser: Problem bei TBlockserial.create

Beitrag von Antrepolit »

Hallo,

ich habe diesmal ein seltsames Problem. Ich möchte über einen modalen Dialog die
Serielle Schnittstelle via synaser ansprechen. Das Problem: serial:=TBlockSerial.Create; schlägt
fehl, was sich aber nicht direkt bemerkbar macht. Teste ich es auf NIL, so ist es direkt
nach dem Create NIL:

Code: Alles auswählen

procedure TWorkproc.RS232_Connect;
begin
  serial:=TBlockSerial.Create;
  serial.Connect('COM2');
  serial.config(9600, 8, 'N', SB1andHalf, True, False);
end;
{------------------------------------------------------------------------------}
procedure TWorkProc.FormCreate(Sender: TObject);
begin
  TimerStep := 0;
  ComPort   := 'COM2';
  Data      := '';
  BSteps    := 2;
  Boards    := 1;
  WholeBar.Step   := Round(WholeBar.Max / Boards);
  PartialBar.Step := Round(PartialBar.Max / BSteps);
 
  RS232_Connect;
end;
Da das From von einem anderen Form in seinem FormCreate-Event erzeugt wird, teste
ich es direkt dort:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
 ShowOnTop;
 WorkProc := TWorkproc.Create(Self);
 if (WorkProc.serial=nil) then
   showMessage('NIL');
end;
Hier bekomme ich immer meine Message "NIL". Woran liegt das?
Erzeuge ich eine TBlockSerial im ersten Form, klappt alles. Geschieht
das aber über das zweite Form, klappt es nicht. :-(
Grüße, Antrepolit

care only if your os is really burning

Benutzeravatar
theo
Beiträge: 11075
Registriert: Mo 11. Sep 2006, 19:01

Re: Synaser: Problem bei TBlockserial.create

Beitrag von theo »

Ich nehme an, das liegt daran dass FormCreate nicht aufgerufen wird.
FormCreate ist ja selber nicht der Constructor sondern eine Ereignisbehandlungsroutine für OnCreate.
Ich würde das ganze total entflechten und nicht die synaser Funktionlität ans Formular binden.

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Synaser: Problem bei TBlockserial.create

Beitrag von Antrepolit »

Ich habe auch schon versucht, das Create des Forms zu überschreiben, aber...
seit ich mit Java programmiere (zwangsläufig :-( ) kriege ich das nicht so recht hin in Laz.
Ich muss meine synaser ja dort verwenden, wo sie benötigt wird. Das wird sie aber
nur in dem Form bzw. seiner Unit. Diese läuft als modaler Dialog zur Geräteüberwachung,
ohne dass der Benutzer was machen können soll / muss. Sie zeigt nur den Fortschritt
des "Prozesses" des Microcontrollers, der über UART mit dem Rechner kommuniziert.

Ich würde sie auch gerne ins Hauptform bringen, aber wie greife ich dann mit dem anderen
Form darauf zu? Entschuldigt bitte, falls diese Frage nun blöd klingt.
Grüße, Antrepolit

care only if your os is really burning

Benutzeravatar
theo
Beiträge: 11075
Registriert: Mo 11. Sep 2006, 19:01

Re: Synaser: Problem bei TBlockserial.create

Beitrag von theo »

Normalerweise wird ein Formular von Laz. automatisch erzeugt.
Man braucht es dann nur noch anzeigen (Show). Pack deinen Code also besser in OnShow rein.

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Synaser: Problem bei TBlockserial.create

Beitrag von Antrepolit »

Danke, das mit dem OnShow war eine gute Idee, nun funktioniert es.
Grüße, Antrepolit

care only if your os is really burning

Antworten