🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #345362

Raspberry/Lazarus/FTDI - prośba o pomoc

#345362
From: stchebel
Date: Tue, 15 Nov 2016 22:47
93 lines
4882 bytes
Witam,
Jakiś czas temu zaprojektowałem urządzenie, które komunikuje się z pecetem poprzez USB z wykorzystaniem kostki FT2232H. Działa bez problemu pod różnymi wersjami Windows. Soft pisany w D6, algorytmicznie niezbyt skomplikowany, ale nazbierało się tego 10k+ linii kodu. Jest pomysł, aby to urządzenie zminiaturyzować i "zbaterializować". Pierwszy pomysł, to wykorzystać RPi.

Tyle wstępu, teraz zaczynają się "schody"..  

Po kolei:

1) Ponieważ Lazarus jest najbliższy koncepcyjnie do GUI D6, więc zassałem i zainstalowałem w zeszłym tygodniu zajnowszą dostępną wersję Lazarusa dla Windows.
Kilka eksperymentów z wykorzystaniem banalnych komponentów, są jakieś tam kosmetyczne różnice, można się przyzwyczaić, ale ogólnie jest OK !!

2) Aby poprawnie komunikować się z układem FT2232H, trzeba zainstalować odpowiednie drivery dostępne tutaj:

http://www.ftdichip.com/Drivers/D2XX.htm

Pod mojego Windowsa(Vista) pobieram z dołu strony:

http://www.ftdichip.com/Drivers/CDM/CDM%202.08.24%20WHQL%20Certified.zip

3) "Roz_zipowuję" to ostatnie, na wszelki wypadek wrzucam wszystkie rozpakowane pliki do katalogu w którym będzie projekt. No i piszemy soft w Lazarusie:

Na Formie jest Button i Label. Soft wygląda tak:

===============================

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  FT_HANDLE:DWord=0;
  ftresult:integer;

implementation
function FT_Open(PVDevice:Integer; ftHandle:Pointer ) : integer ; stdcall ; External 'ftd2xx.dll' name 'FT_Open';
function FT_Close(ftHandle:Dword) : integer ; stdcall ; External 'ftd2xx.dll' name 'FT_Close';
{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);

begin
  ftresult:=FT_Open(0,@FT_HANDLE);
  Label1.Caption:=IntToStr(ftresult);
  ftresult:=FT_Close(FT_HANDLE);
end;

end.

==============================

No i zgodnie z tym co piszą tutaj:

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf , wszystko jest OK pod Windowsem.

4 ) Pod Raspbiana (patrz pkt.2) pobieram :

http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx-arm-v6-hf-1.3.6.tgz

i cały proces instalacji przeprowadzam zgodnie z instrukcją zawartą w pliku Readme.txt z powyższego. Nie jest źle, po całym upierdliwym procesie instalacji, po odpaleniu zgodnie z instrukcją programu "read" z examples/EEPROM, na konsoli wyświetla mi prawidłową zawartość EEPROM'a z zaprogramowanymi prze ze mnie danymi (Witaj Stachu !!) w polu 'device description'.

5) Tymczasem program napisany w Lazarusie pod Raspbiana, identyczny jak w pkt.3, z wyjątkiem :

 a) W prototypie funkcji FT_Open mamy : External 'ftd2xx.so'
 b) W Button1.Click, w ogóle nie wywołuję funkcji FT_Open i FT_Close

6) Efekt jest taki, że kompilacja przechodzi na RPi/Lazarus bez błędów, ale forma się nie otwiera. Po kompilacji od razu pojawia się okno dialogowe zamknięcia procesu debuggowania: "Execution Stopped"

=============================

Wiem, dłuugi post, ale już 2 dni nad tym ślęczę i starałem się w miarę precyzyjnie opisać problem.

Gdzie do cholery popełniam błąd?!
Technical Details
Message-ID: <0ab4624c-e38d-40b6-9d07-2f655cd846c3@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin.stu.neva.ru!news.neodome.net!neodome!news.mixmin.net!weretis.net!feeder4.news.weretis.net!1.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!newspeer1.nac.net!border2.nntp.dca1.giganews.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!o1no12216ito.0!news-out.google.com!c26ni23itd.0!nntp.google.com!w132no10838ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 10.99.155.9 with SMTP id r9mr1308564pgd.127.1479250030123;        Tue, 15 Nov 2016 14:47:10 -0800 (PST)
X-Received: by 10.157.17.3 with SMTP id g3mr995726ote.8.1479250030078; Tue, 15 Nov 2016 14:47:10 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin.stu.neva.ru!news.neodome.net!neodome!news.mixmin.net!weretis.net!feeder4.news.weretis.net!1.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!newspeer1.nac.net!border2.nntp.dca1.giganews.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!o1no12216ito.0!news-out.google.com!c26ni23itd.0!nntp.google.com!w132no10838ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Tue, 15 Nov 2016 14:47:09 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=185.53.155.198; posting-account=67yd9woAAAAHUu8VHyA7Js47M98NE3m3
NNTP-Posting-Host: 185.53.155.198
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0ab4624c-e38d-40b6-9d07-2f655cd846c3@googlegroups.com>
Subject: Raspberry/Lazarus/FTDI - prośba o pomoc
From: stchebel@gmail.com
Injection-Date: Tue, 15 Nov 2016 22:47:10 +0000
Lines: 126
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit