Lazarus 2.0.8 (2020.04.16.)
Letöltés

file Lazarus Raspberry PI IR Cam

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Először meg ment rendsen...
#1396

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Ezt nem tudom reprodukálni. Nálam az avconv gond nélkül gyártja az avi-t. Próbáld meg a parancsodat simán terminálban futtatni, akkor is ezt csinálja? Ha igen, akkor szükséges lehet jobban belemélyedni az ffmpeg dokumentációjába. Ha nem, akkor hirtelen nincs ötletem.
#1395

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: A Process inicializálást a while ciklus elé kell rakni, próbáld meg így:


Működik köszönöm. De most azt csinálja, hogy létrejön az mkv fájl 558byte-al (nem is változik a mérete). Process leállítása után le is áll a ffmpeg, de a fájlba nem kerül semmi. :o
#1394

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

makgab írta: Hol lehet a hiba?

A Process inicializálást a while ciklus elé kell rakni, próbáld meg így:
unit MainUnit;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Process;
 
type
 
  { TMyThread }
 
  TMyThread = class(TThread)
  private
    fStatusText: string;
    procedure ShowStatus;
  protected
    procedure Execute; override;
  public
    constructor Create(CreateSuspended: boolean);
  end;
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;
 
var
  Form1: TForm1;
  ShouldProcessRun: Boolean;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
var
  MyThread : TMyThread;
begin
  MyThread := TMyThread.Create(True);
  if Assigned(MyThread.FatalException) then
    raise MyThread.FatalException;
  ShouldProcessRun := True;
  MyThread.Start;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShouldProcessRun := False;
end;
 
{ TMyThread }
 
procedure TMyThread.ShowStatus;
begin
  Form1.Caption := fStatusText;
end;
 
procedure TMyThread.Execute;
var newStatus : string;
    aProc: TProcess;
begin
  fStatusText := 'TMyThread Starting ...';
  Synchronize(@Showstatus);
  aProc := TProcess.Create(nil);
  aProc.CommandLine:='/usr/bin/avconv -f video4linux2 -r 10 -i /dev/video0 test.avi';
  aProc.Execute;
  fStatusText := 'TMyThread Running ...';
  while (not Terminated) and (ShouldProcessRun) do begin
    newStatus:='TMyThread Time: '+FormatDateTime('YYYY-MM-DD HH:NN:SS',Now);
    if NewStatus <> fStatusText then begin
      fStatusText := newStatus;
      Synchronize(@Showstatus);
    end;
  end;
  aProc.Terminate(0);
  aProc.Free;
end;
 
constructor TMyThread.Create(CreateSuspended: boolean);
begin
  FreeOnTerminate := True;
  inherited Create(CreateSuspended);
end;
 
end.
#1393

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: ... A szereplő while ciklus feltételébe rakj be egy saját globális változót (a ciklust majd ezzel tudod megállítani), és a ciklus mögé egyből jönne ez: ...


Egy kérdés, mert nem világos még valami:
Az első while ciklus-ban indul a video grab és a következő ciklusokban már nem csinál semmit, mivel már fut az a process?

Illetve egy bajom van vele, valami biztos nem jó:
  fStatusText := 'TMyThread Starting ...';
  Synchronize(@Showstatus);
  fStatusText := 'TMyThread Running ...';
  //while (not Terminated) and (true {any condition required}) do begin
  while (STATUS) do begin
 
       aProc:=TProcess.Create(nil);
      aProc.Options:=[{poWaitOnExit,} poUsePipes];
      aProc.CommandLine:='ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 output.mkv';
      aProc.Execute;
      //aProc.Free;
     newStatus:='TMyThread Time: '+FormatDateTime('YYYY-MM-DD HH:NN:SS',Now);
 
    if NewStatus <> fStatusText then begin
      fStatusText := newStatus;
      Synchronize(@Showstatus);
    end;
  end; // end of while
  aProc.Terminate(0);
  aProc.Free;
Nem áll meg az 'ffmpeg'. A memóriában marad és ki kell lőnöm kill-el. Hol lehet a hiba?
#1392

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Igen, az ffmpeg is tud felvételt készíteni.
Rövid, tömör példa projectet találsz több szálas programra a /usr/share/lazarus/1.2.4/examples/multithreading/multithreadingexample1.lpi projectben. Célszerűen a TMyThread class akár külön unit fájlban is lehet, ha hosszúra sikeredik.
Az Execute eljárásába tudod írni a videó rögzítés parancsait. A processből a poWaitOnExit tulajdonságot inkább vedd majd ki, különben nem lép majd túl a aProc.Execute-on. A szereplő while ciklus feltételébe rakj be egy saját globális változót (a ciklust majd ezzel tudod megállítani), és a ciklus mögé egyből jönne ez:
aProc.Terminate(0);
  aProc.Free;
A fakultatív Showstatus eljárásban visszajelzést tudsz írni a TFrom1 látható komponenseire (pl eltelt idő).
Az új szál meghívását a példa tartalmazza, a saját változódat itt állítsd True-ra.
Leállításhoz a saját változód False-ra állítása szükséges (pl. egy Form-ra helyezett gomb megnyomásához rendelve).
#1391
Megköszönték: makgab

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

vagy ffmpeg:
ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 output.mkv

Hogyan is kellen új thread-be tenni?
#1390

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Csak a soros portot használom, a videós részét nem ismerem. Ha nincsen egyszerű beépített eljárás vagy függvény, akkor én meghívék egy külsős, egyszerű parancssoros programot, ha rögzítenem kéne videót egy fájlba.
sudo apt-get install libav-tools
Ez tartalmaz egy avconv programot, ami videót rögzít. Ezt lazarusból már el lehet a megfelelő paraméterekkel indítani.
uses Process, ...;
var aProc: TProcess;
begin
  aProc:=TProcess.Create(nil);
  aProc.Options:=[poWaitOnExit, poUsePipes];
  aProc.CommandLine:='/usr/bin/avconv -f video4linux2 -r 10 -i /dev/video0 test.avi';
  aProc.Execute;
  aProc.Free;
end;
Ha terminálban futtatod, akkor CTRL-C a felvétel vége. Én lazarusba külön Thread-ként építeném be, úgy nem akasztja meg futás közben a GUI-t, és talán meg is lehet szépen állítani bármikor a futását...;)
#1389
Megköszönték: makgab

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Van egy 5dpo komponens, aminek a soros portos egységét sikeresen használom egy jó ideje, de van neki videós része, ami lehet, hogy szintén működik.


A cam képét hogyan lehet menteni file-ba? Merre keresgéljek?
#1388

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Elvileg egy IR Cam miben különbözik a webcam-től? (Pl. RPi féle IR Cam.)
#1387

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Van egy 5dpo komponens, aminek a soros portos egységét sikeresen használom egy jó ideje, de van neki videós része, ami lehet, hogy szintén működik.


Ezzel szépen megy! Nagyon jó! Kösz!
#1386

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

makgab írta: A Lazarus (fpc) mellett fel van telepítve a binutils-arm:

$ rpm -qa|grep binutil
binutils-arm-linux-gnu-2.24-5.fc20.x86_64
cross-binutils-common-2.24-5.fc20.noarch
binutils-2.23.88.0.1-13.fc20.x86_64

A múltkor úgy értelmeztem (bár nem volt a felsorolásban), hogy a "cross arm binutils" mellé az "cross arm libc*" (és esetleg a "gcc arm") is telepítve van a gépeden. (A csomagok pontos nevei disztribúciónként eltérőek lehetnek.)
Természetesen a "libc" is szükséges a keresztfordításhoz, hiszen abban vannak az alapvető eljárások kódjai. Ha nincs fent a gépeden akkor tedd fel!
Továbbá szükség lehet (a programodtól függően) további állományokra a célrendszerből.

Ha végképp nem megy akkor az eltérő architektúrákra történő fordítást megoldhatod emulátorba telepített operációs rendszereken...
#1385

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Valóban, továbbá van még egy glib is valahol, amit átírva glib2-re végül lefordul. Viszont a screenshot-on látszó "Could not queue video buffer" hibaüzenet nálam is megjelenik, egy olyan kameránál, amit pl. a VLC lejátszó a v4l2:///dev/video0 helyről tud gond nélkül megjeleníteni.

Van egy 5dpo komponens, aminek a soros portos egységét sikeresen használom egy jó ideje, de van neki videós része, ami lehet, hogy szintén működik.
#1384

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Nálam nem fordul le, egy gtkDef unitot nem talál, úgyhogy egyelőre nem tudom ellenőrizni. (Linux Mint 13, x86_64, Lazarus 1.3 és 1.2.4)


Igen, nálam is erre kellett javítanom a gtk2 miatt:
# rgbgtkroutines.pas
...
// gtkDef, gtkProc,
 gtk2Def, gtk2Proc,
 RGBTypes;
...

Így már szépen lefordult.
#1383

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Nálam nem fordul le, egy gtkDef unitot nem talál, úgyhogy egyelőre nem tudom ellenőrizni. (Linux Mint 13, x86_64, Lazarus 1.3 és 1.2.4)
#1382

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

A sourceforge.net/projects/freepascalvideo/ lefordul x86_64-en, de a laptop-om webcam-ról nem grab-eli a képet:
"Could not queue video buffer"

Nektek működik? (A Csííz alkalmazásban pl. működik a webcam-om.)

screenshot-ot:
#1380

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Gábor írta: A fordításhoz nincs szükség arm eszközre. Bár szerintem a tesztelést jobb lenne élesben elvégezni, mint emulátoron.


A fordítás nekem egyelőre nem futott le, de majd meglátom...
#1379

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

A fordításhoz nincs szükség arm eszközre. Bár szerintem a tesztelést jobb lenne élesben elvégezni, mint emulátoron.

Amire szükség van:
  • az arm-linux kiadás unitjai
  • a keresztfordításra alkalmas ppcarm
  • + "cross arm binutils"
  • + "cross arm libc"
A FreePascal arm-linux rendszerre készített és a használni kívánt fordítóval megegyező(!!!) revízió számú kiadásból a unitok bináris állományait alkönyvtárakkal együtt át kell másolni a használni kívánt fordító "units" könyvtárába (például innen: ~/fpc_arm/units/arm-linux/ ide: ~/fpc_x64/units/arm-linux/).

Ez után el kell készíteni a keresztfordításra alkalmas FreePascal fordítót (ppcarm) a korábban említett írás egyik szakaszában leírt módon: Make FPC able to cross compile for arm-linux (itt most nem fordítom le az írást, majd a wiki-n ha lesz egy kis időm)
Természetesen az fpc.cfg kézi frissítéséről sem szabad megfeledkezni!

A keresztfordításra alkalmasság ez esetben azt jelenti, hogy a program x64 rendszeren fut, de arm kódot készít. Az így elkészített ppcarm nem ugyanaz mint amit a FreePascal arm kiadásában találhatsz, arm rendszeren nem is futtatható, csak a nevük egyezik meg.

Ha mindez sikeresen megtörtént akkor már tudsz majd arm-linux-on futó programokat készíteni x64-linux alatt...
#1378

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Gábor írta: Az FPC/Lazarus wiki-n megtalálható a "Setup Cross Compile For ARM" című angol nyelvű írás, mely erről a témáról szól.
Az oldal tetején van hivatkozás a magyar nyelvű lapváltozatra is, ami sajnos egyelőre egy régebbi állapotot tartalmaz (bár így is hasznos lehet).
Remélem segít...


A Lazarus (fpc) mellett fel van telepítve a binutils-arm:
$ rpm -qa|grep binutil
binutils-arm-linux-gnu-2.24-5.fc20.x86_64
cross-binutils-common-2.24-5.fc20.noarch
binutils-2.23.88.0.1-13.fc20.x86_64

Ehhez kell egy fpc-x.x.x-arm-linux.tar.gz (pl. 2.6.0).

A doksi szerint: ppcarm -XParm-linux- hello.pas
A ppcarm nem x86_64-re van fordítva, hanem ugyebár arm CPU-ra. Ez nem fog indulni x86_64-en. Ezt nem értem, hogyan akarja a ppcarm-al a hello.pas-t lefordítani arm-ra.
Azaz x86_64-en nem fogok tudni arm-ra fordítani. Ehhez kell mindenképp egy arm eszköz... :) Illetve kellene egy cross compiler. Mi kellene még hogy tudjam fordítani arm-ra a példa kódot?
#1377

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

makgab írta: A Raspberry-re gondolsz? Volt pár darab a kezem alatt, elég kellemes. Bár van aki gyengének tartja.

Nem a készülékre, hanem a linkre gondoltam, illetve a linken elérhető Pi-Vision project-re. A link most nekem már valamiért nem töltődik be, de a forráskód letölthető a GitHub -ról.
#1376

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Szia!
heywhatsthebigidea.net/projects/pi-vision-a-raspberry-pi-camera-controller/
A forráskód alapján Timage-re jeleníti meg a képet, szerintem ígéretesnek tűnik, te találkoztál már vele, próbáltad?


Nem rossz, de ez nem közvetlen a hardvert éri el, hanem a raspian disztribúcióban levő programocskákat hívja meg.
Engem a közvetlen hardver programozása érdekelne. Persze ez sem rossz. :)
#1375

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Az FPC/Lazarus wiki-n megtalálható a "Setup Cross Compile For ARM" című angol nyelvű írás, mely erről a témáról szól.
Az oldal tetején van hivatkozás a magyar nyelvű lapváltozatra is, ami sajnos egyelőre egy régebbi állapotot tartalmaz (bár így is hasznos lehet).
Remélem segít...
#1373

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Szia!
...


A Cross compile fordítást még nem próbáltam. Csinált valaki ilyet?
Pl. Linux Fedora x64 alatt szeretném fordítani raspberry-re a projektet, akkor a Lazarusban be kell állítani, hogy:
target OS = Linux
target CPU = arm

Majd ha ebben az ablakban "Build"-et nyomok, akkor azt irja, hogy:
"The /usr/bin/fpc compiler does not support arm-linux"

Pontosan mi kellene ehhez?
#1372

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

JohnnyK írta: Szia!
Nekem nincsen Raspberry-m, így nincsen tapasztalatom, de találtam egy honlapot letölthető Lazarus forráskóddal a kérdéses témában:
heywhatsthebigidea.net/projects/pi-vision-a-raspberry-pi-camera-controller/

Igen, ilyesmire gondoltam. Köszönöm, meg is nézem.

JohnnyK írta: A forráskód alapján Timage-re jeleníti meg a képet, szerintem ígéretesnek tűnik, te találkoztál már vele, próbáltad?

A Raspberry-re gondolsz? Volt pár darab a kezem alatt, elég kellemes. Bár van aki gyengének tartja.
#1371

  • JohnnyK
  • JohnnyK profilkép
  • Gyakori fórumozó
  • Gyakori fórumozó
  • Hozzászólások: 78
  • Köszönetek: 16

JohnnyK válaszolt a témára: Válasz: Lazarus Raspberry PI IR Cam

Szia!
Nekem nincsen Raspberry-m, így nincsen tapasztalatom, de találtam egy honlapot letölthető Lazarus forráskóddal a kérdéses témában:
heywhatsthebigidea.net/projects/pi-vision-a-raspberry-pi-camera-controller/
A forráskód alapján Timage-re jeleníti meg a képet, szerintem ígéretesnek tűnik, te találkoztál már vele, próbáltad?
#1369

  • makgab
  • makgab profilkép
  • Törzstag
  • Törzstag
  • Hozzászólások: 280
  • Karma: -1
  • Köszönetek: 1

makgab létrehozta a témát: Lazarus Raspberry PI IR Cam

Üdv!

Próbált már valaki RPi-t Lazarussal?
Van a RPi-hez IR Cam. A kamerát el lehet érni valahogy Lazarus-ból?
Pl. a képet megjeleníteni a formon.


Gábor
#1368