TBlockSerial erzeugt kein Wirkliches PID

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

TBlockSerial erzeugt kein Wirkliches PID

Beitrag von Maik81SE »

Moin @ll

Da ich leider in die Lage gekommen bin, das ich gewisse Komponenten (zB. Blockserial) in Nahezu jedem Programm brauche und diese IMMER nach dem Selben Weg erzeugt werden. plane ich diese in einer eigenen Unit in Form einer Neuen Class erzeugen und zu nutzen.

Jedoch schein ich da wohl irgend etwas zu vergessen.

Genauer?!
Es handelt sich hierbei um folgenden Programmauszug.

Code: Alles auswählen

  Port                       := 'dev/ttyUSB';
  USB                        := TBlockSerial.Create;
  try
    try
      USB.Config(9600, 8, 'N', SB1, false, false);
      for a := 0 to 20 do begin
        USB.Connect(Port + IntToStr(a));
        if USB.LastError = 0 then Break;
      end;
      Sleep(1000);
      if USB.LastError = 0 then begin
        _USB.Connect           := True;
        _USB.Error             := False;
      end;
    except
      Status                 := IntToStr(USB.LastError);
      USB.Free;
    end;
  finally
    Status                   := USB.LastErrorDesc + ' ' + Port + IntToStr(a);
  end;
Innerhalb des Jeweiligen Programmes funktioniert dies OHNE Probleme, aber sowie ich meine Unit hard_def einbinde, bekomme ich die Fehlermeldung

Projekt Spielwiese hat Execption-Klasse >RunError(2)< ausgelöst.

In Datei 'synaser.pas" in Zeile


hierbei handelt es sich um die Zeile writeln(f, s); in der procedure TBlockSerial.CreateLockfile(PidNr: integer);

Die hard_def ist wie nachfolgend geschrieben, ergo 1:1 aus einem funktionierenden Programm kopiert, welches ich vor 4 Jahren geschrieben habe und bis heute noch Astrein läuft.

Code: Alles auswählen

unit hard_def;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Controls, Graphics, Dialogs, StdCtrls,

  //Hardware Units
  synaser;

Type
  T_USB                      = record
    Connect, Error           : boolean;
    RXD, Port                : AnsiString;

  end;

  THard_USB                  = class
    // Type def
    _USB                     : T_USB;

    // class def
    USB                      : TBlockSerial;

    // var def
    Port, Status             : AnsiString;

  private

  public
    constructor Create;
    destructor Done;
  end;


implementation

{  Klasse T_USB }

constructor THard_USB.Create;
var
  a                          : byte;
begin
  inherited;
  Port                       := 'dev/ttyUSB';
  USB                        := TBlockSerial.Create;
  try
    try
      USB.Config(9600, 8, 'N', SB1, false, false);
      for a := 0 to 20 do begin
        USB.Connect(Port + IntToStr(a));
        if USB.LastError = 0 then Break;
      end;
      Sleep(1000);
      if USB.LastError = 0 then begin
        _USB.Connect           := True;
        _USB.Error             := False;
      end;
    except
      Status                 := IntToStr(USB.LastError);
      USB.Free;
    end;
  finally
    Status                   := USB.LastErrorDesc + ' ' + Port + IntToStr(a);
  end;
end;

destructor THard_USB.Done;
begin
  inherited;
  USB.Free;
end;

end.
Der Aufruf erfolgt einfach über Hard_USB := THard_USB.Create;


Die Optimierung sollte am WE erfolgen, sofern dies Tool laufen würde.

Grüße und angenehmen Feierabend.
Maik

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TBlockSerial erzeugt kein Wirkliches PID

Beitrag von Winni »

Hi!

RunError 2 ist "File not found".

Ist die Datei noch nicht erzeugt worden????

Winni

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TBlockSerial erzeugt kein Wirkliches PID

Beitrag von Maik81SE »

Winni hat geschrieben:
Di 22. Feb 2022, 20:38
Hi!

RunError 2 ist "File not found".

Ist die Datei noch nicht erzeugt worden????

Winni
Da ich in dem Moment auch keine PID-Nummer hab, kann ich auch nicht nachschauen...
nach dem Hinweiß, könnte ich mir eher vorstellen, das er nicht schreiben kann, weil über diesen Weg wohl rechte fehlen :shock:

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Antworten