Article View: pl.comp.lang.delphi
Article #345362Raspberry/Lazarus/FTDI - prośba o pomoc
From: stchebel
Date: Tue, 15 Nov 2016 22:47
Date: Tue, 15 Nov 2016 22:47
93 lines
4882 bytes
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-mailShow 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