Dll'den veri çekerken nerede hata yapıyorum.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20

Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen seci20 »

Ustalarım merhaba bir dll veri çekmek istiyorum foksiyonları doğru giriyorum dll olan foksiyonada karşı geliyor ama proje durduruluyor gönderdiğimde.Hatanın nerede olduğunu bir türlü bulamadım.Başka programlar veriyi düzgün çekiyor ama ben çekemiyorum.

Kodum şu şekilde.

Kod: Tümünü seç

Function _IFWD_DL_open_comm_port(channel : Integer; Port1,Port2 : PAnsiChar; Speed : Integer; result : PAnsiChar): Integer;
 cdecl; external
 'IFWD_DownloadDll.dll';


procedure TForm1.Button1Click(Sender: TObject);
var
o:integer;

begin
_IFWD_DL_open_comm_port(1,'"\\.\USB1"','"\\.\USB1"',921600,0);

end;
dll dosyasıda şu.

http://dosya.co/bbvv3yxeu6ix/IFWD_DownloadDll.dll.html



dllenin foksiyonlarını gösterdiği bir program daha var orada şu şekilde yazıyor.

Kod: Tümünü seç

   1,731: Func, IFWD_DL_open_comm_port: channel: 1, comm port name: "\\.\USB1", ctrl port name: "\\.\USB1"
   
   1,731: FuncRes, IFWD_DL_open_comm_port: channel: 1, result: IFWD_DL_OK, status: "Channel 1 is succesfully opened."
ama benım proje durduruldu hatası alıyorum bir türlü veriyi oradan çekemedim.Hatam nerededir acaba ? şimdiden yardımcı olan ustalarıma çok teşekkür ederim...
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen ertank »

Merhaba,

DLL kullanan uygulamanın DLL için yaptığı tanımları paylaşabilir misiniz? Sizin aşağıdaki kodunuzun örnek uygulamadaki karşılığı nedir?

Kod: Tümünü seç

Function _IFWD_DL_open_comm_port(channel : Integer; Port1,Port2 : PAnsiChar; Speed : Integer; result : PAnsiChar): Integer;
 cdecl; external
 'IFWD_DownloadDll.dll';
seci20

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen seci20 »

ertank yazdı:Merhaba,

DLL kullanan uygulamanın DLL için yaptığı tanımları paylaşabilir misiniz? Sizin aşağıdaki kodunuzun örnek uygulamadaki karşılığı nedir?

Kod: Tümünü seç

Function _IFWD_DL_open_comm_port(channel : Integer; Port1,Port2 : PAnsiChar; Speed : Integer; result : PAnsiChar): Integer;
 cdecl; external
 'IFWD_DownloadDll.dll';
hocam şu alttaki programdaki karşılığı

Kod: Tümünü seç

  1,731: FuncRes, IFWD_DL_open_comm_port: channel: 1, result: IFWD_DL_OK, status: "Channel 1 is succesfully opened."
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen ertank »

Kaynak kod içindeki DLL tanımını kastetmiştim. Kullanımı veya fonksiyondan gelen cevap değil sormak istediğim.
seci20

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen seci20 »

ertank yazdı:Kaynak kod içindeki DLL tanımını kastetmiştim. Kullanımı veya fonksiyondan gelen cevap değil sormak istediğim.
hocam integer olarak geliyor içindeki.Bilgi çekilen yerlerde pchar değeri olarak.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen ertank »

Örnek kaynak kodu paylaşabilir misiniz?
seci20

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen seci20 »

ertank yazdı:Örnek kaynak kodu paylaşabilir misiniz?
hocam kaynak kodu degıl ama bir log programı var dll gonderdıgı bütün verileri gösteriyor.Program bu dll için zaten.

içindeki tracewier programı tüm logları gösteriyor hocam.

şu şekilde.

Resim


ustune 2 kere bastıgınızda sıze dll komutlarınıde tümüyle listeliyor hocam.Birde log dosyası olusturmak ıcın flash tool programını açıp sağ alt kısmında bulunan log düğmesine 1 kez basıp çekmeniz yeterli olucaktır.

programların hepsi.

http://dosya.co/bfaz21aqryqu/FlashTool_ ... 0.zip.html
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen ertank »

DLL dosyasını oluşturan tarafından (şahıs/firma) DLL içindeki export edilen fonksiyonların detayları paylaşılmaz ise kullanımı çok mümkün olmayabilir. En basitinden "_IFWD_DL_get_dll_version" fonksiyonu;
- Geriye string değer mi çevirecek?
- AnsiString değer mi çevirecek?
- Yoksa bu iki alternatif (string/AnsiString) değerden bir tanesi fonksiyon içinde değişken olarak parametre geçilmesi şekli ile mi kullanılacak?
- Gelen bilgi string değil byte array olarak mı gelecek?
- Yoksa Base64 üzerinden string dönüşümü mü yapılacak?

Yukarıda saydıklarım bir çırpıda akla gelebilecek sorular. Eğer fonksiyon tanımlarının öğrenilebileceği bir yer var ise (muhtemelen C/C# kodu olabilir) bu kaynak üzerinden yardımcı olmak mümkün olabilir.

Aksi halde sorunun çözümü deneme yanılma ile olmak zorunda ki bu çok fazla zaman ve uğraşı gerektirir. Maalesef sonunda sonuca ulaşılacağının da garantisi yoktur.
seci20

Re: Dll'den veri çekerken nerede hata yapıyorum.

Mesaj gönderen seci20 »

ertank yazdı:DLL dosyasını oluşturan tarafından (şahıs/firma) DLL içindeki export edilen fonksiyonların detayları paylaşılmaz ise kullanımı çok mümkün olmayabilir. En basitinden "_IFWD_DL_get_dll_version" fonksiyonu;
- Geriye string değer mi çevirecek?
- AnsiString değer mi çevirecek?
- Yoksa bu iki alternatif (string/AnsiString) değerden bir tanesi fonksiyon içinde değişken olarak parametre geçilmesi şekli ile mi kullanılacak?
- Gelen bilgi string değil byte array olarak mı gelecek?
- Yoksa Base64 üzerinden string dönüşümü mü yapılacak?

Yukarıda saydıklarım bir çırpıda akla gelebilecek sorular. Eğer fonksiyon tanımlarının öğrenilebileceği bir yer var ise (muhtemelen C/C# kodu olabilir) bu kaynak üzerinden yardımcı olmak mümkün olabilir.

Aksi halde sorunun çözümü deneme yanılma ile olmak zorunda ki bu çok fazla zaman ve uğraşı gerektirir. Maalesef sonunda sonuca ulaşılacağının da garantisi yoktur.
anladım hocma cevabınız için çok teşekkür ederim.Dll kaynaklarına ulaşmaya çalışacağım.
Cevapla