| Author |
Message
|
mikee Poziom 9

Joined: 25 Mar 2003 Posts: 33 Location: Toruń
|
#1
04 Aug 2004 20:04 FTDI USB<=>RS232 i c++ builer |
|
|
|
Witam,
zastanawiam sie czy ktos z Was próbowal obsłuzyc konwerter USB na RS232(FTDI) pod builderkiem. Bo ja mam z tym mały problem. Chodzi prawdopodobnie o DLL'ki do których nie moge sie dobrac. Podczas próby kompilacji pojawia sie komunikat
[Linker Error] Unresolved external 'FT_ListDevices' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\MOJE PROJEKTY\OBSLUGA_FTDI_2\UNIT1.OBJ
a innym razem cos takiego
[Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\MOJE PROJEKTY\OBSLUGA_FTDI3\FTD2XX.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
co to jest to OMF i jak sie tego problemu pozbyc?
załczam kod moze ktos bedzie wiedział co tu nie gra
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "FTD2XX.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
extern "C" __declspec(dllimport) FT_STATUS WINAPI FT_GetDeviceInfo ( FT_HANDLE ftHandle, FT_DEVICE *pftType, LPDWORD lpdwID, PCHAR pcSerialNumber, PCHAR pcDescription, PVOID pvDummy );
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FT_HANDLE ftHandle; // valid handle returned from FT_OpenEx
FT_DEVICE ftDevice;
FT_STATUS ftStatus;
DWORD deviceID;
char SerialNumber[16];
char Description[64];
ftStatus = FT_GetDeviceInfo(
ftHandle,
&ftDevice,
&deviceID,
SerialNumber,
Description,
NULL
);
if (ftStatus == FT_OK)
{
if (ftDevice == FT_DEVICE_BM)
; // device is FT232BM
else if (ftDevice == FT_DEVICE_AM)
; // device is FT8U232AM
else if (ftDevice == FT_DEVICE_100AX)
; // device is FT8U100AX
else
; // unknown device (this should not happen!)
// deviceID contains encoded device ID
// SerialNumber, Description contain 0-terminated strings
}
else
{
// FT_GetDeviceType FAILED!
}
}
//---------------------------------------------------------------------------
Moze ktoz miał juz taki problem i wie jak sobie z nim poradzic!!!
Z góry dzieki
Pozdrawiam
|
|
| Back to top |
|
 |
Google

|
#
04 Aug 2004 20:04 |
|
|
|
|
|
| Back to top |
|
 |
-raj- Poziom 6

Joined: 03 Aug 2004 Posts: 16 Location: Gdańsk
|
#2
04 Aug 2004 21:57 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
Hej
Problem tkwi w tym, ze biblioteka FTD2XX.LIB jest utworzona w formacie COFF. Format ten jest uzywany np. w Visual C. Do Buildera potrzebujesz biblioteki w formacie OMF. Sa dwa wyjscia - poszukaj w necie tego lib-a w formacie omf, lub mozna stworzyc taka biblioteke przy pomocy implib.exe, ktory tworzy ja na podstawie dll-a. Niestety nigdy nie bawilem sie implib-em, wiec musisz w necie poszukac instrukcji.
Wlasnie znalazlem jeden adres, jezeli uda ci sie stad cos zrozumiec to bedziesz umial zrobic wlasna wersje lib-a:
http://lat.subscribe.ru/archive/tech.electronic1/200303/22210135.html
|
|
| Back to top |
|
 |
praw Poziom 14

Joined: 16 Oct 2003 Posts: 183 Location: Gdańśk
|
#3
05 Aug 2004 08:15 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
wystarczu przeczytac help do impliba - wszystko ladnie wyjasnione - i nie ma z tym zadnym problemow.
pozdrawiam
|
|
| Back to top |
|
 |
mikee Poziom 9

Joined: 25 Mar 2003 Posts: 33 Location: Toruń
|
#4
05 Aug 2004 21:52 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
Witam,
Stosujac sie do powyrzszych zaleceń udało sie pozbyc problem. Wszystko kompiluje sie gładko:). I za to wielkie dzieki!!!
Jednak pojawiaja sie kolejne pytania:
1. czy to normalne ze usuwajac linie
extern "C" __declspec(dllimport) FT_STATUS WINAPI FT_ListDevices(
PVOID pArg1,
PVOID pArg2,
DWORD Flags
);
...program prawidłowo sie kompiluje???
2. Dlaczego nie jest wykrywany moduł FTDI, mimo iz jest podłaczony do kompa (probuje uzyskac jakies informacje o podłaczonym module zgodnie z zgodnie z instrukcja w helpie - patrz program wyzej)
Moze pytania sa smieszne co dla niektórych, ale mi one spedzaja sen z powiek :( Prosze o pomoc
Z gory dzieki
|
|
| Back to top |
|
 |
Google

|
#
05 Aug 2004 21:52 |
|
|
|
|
|
| Back to top |
|
 |
-raj- Poziom 6

Joined: 03 Aug 2004 Posts: 16 Location: Gdańsk
|
#5
05 Aug 2004 22:38 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
Hej
Odp. 1:
Tego nie jestem pewny, ale moze juz w pliku naglowkowym do tej biblioteki jest deklaracja tej funkcji??
Odp. 2:
Jezeli wyslales tu caly kod programu, to wydaje mi sie, ze przed wywolaniem funkcji FT_GetDeviceInfo powinienes uzyskac uchwyt ftHandle do urzadzenia. Jak widac w komentarzu przy deklaracji uchwytu:
"FT_HANDLE ftHandle; // valid handle returned from FT_OpenEx ", powinienes uzyc do tego celu funkcji FT_OpenEx.
|
|
| Back to top |
|
 |
loks Poziom 11

Joined: 05 Aug 2004 Posts: 76 Location: Gdańsk
|
#6
27 Oct 2005 06:55 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
Witam,
Mam ten sam problem co kolega mikee. Pojawia mi sie następujący error:
Linker Error] Unresolved external 'FT_Open' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\MOJE PROJEKTY\OBSLUGA_FTDI\UNIT1.OBJ
Próbowałem użyć implib.exe, ale bez rezultatu. Rosyjskiego nie znam, próbowałem czytać link do rosyjskiej strony i zrobiłem to w ten sposób:
- skopiowałem z archiwum pliki FTD2XX.h i FTD2XX.dll do katalogu w którym będzie program w C++ Builder 6,
- skopiwałem do katalogu plik implib.exe
- w wierszu poleceń użyłem implib.exe w następujący sposób:
implib FTD2XX.lib FTD2XX.dll (wyglądało, że nie ma błędów),
- dołączyłem plik nagłówkowy FTD2XX.h do programu w C++ Builder.
Wiem, że trzeba użyć komendy USELIB('FTD2XX.lib'), ale nie wiem w którym miejscu.
W zwiazku tym pytanie: gdzie robię błąd? Może ktoś już ma zrobiony ten plik w odpowiednim formacie.
Pozdrawiam,
Łukasz
|
|
| Back to top |
|
 |
Google

|
#
27 Oct 2005 06:55 |
|
|
|
|
|
| Back to top |
|
 |
krzychoo_soft Poziom 15

Joined: 20 Jan 2004 Posts: 217 Location: Lubuskie
|
#7
07 Mar 2006 01:27 Re: FTDI USB<=>RS232 i c++ builer |
|
|
|
| loks wrote: |
Wiem, że trzeba użyć komendy USELIB('FTD2XX.lib'), ale nie wiem w którym miejscu.
|
w menu "project" (o ile dobrze pamiętam) jest opcja "add to project...", odpal to, dodaj plik *.lib, zapisz projekt i przekompiluj.
|
|
| Back to top |
|
 |