Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
winusb protokolü hakkında yardım
#1
Ustalarım kolay gelsin. Android cihazlara usb üzerinden bağlantı yapmaya çalışıyorum. Amacım adb.exe kullanmadan direk olarak kendim program yazmak. AdbWinApi.dll kaynak koduna baktığımda winusb kullandığını gördüm.  Bakınız.   Aynı işlemleri ben uyguladığımda cihazı başarı ile açsam bile malasef cihazdan hiç bir tepki gelmiyor.


Adb.exe ile cihaza komut gönderdiğimde bakınız bu şekilde oluyor..


nlGjOV.png



Görüldüğü gibi direk cihaz tepki veriyor. Ben open yaptığımda yada veri gönderdiğimde winusb gönderdiğini söylüyor ama okunan yada yazılan bir veri gözükmüyor.


Guid adresleri doğru open sorunsuz yapılıyor winusb sorunsuz bağlanıyor.Nerede hata yapıyor olabilirim yada atladığım bir kısımmı var ? 

Kendi kodum şu şekilde...


procedure OpenWinUSBDevice(deviceName: String);


begin
   Info('Trying to open '+deviceName);
   hWinUsbHandle := CreateFile(
     PChar(deviceName),
     GENERIC_WRITE or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
     nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0);

   if hWinUsbHandle = INVALID_HANDLE_VALUE then begin
     Info('Cannot get a handle for the device. Perhaps it''s not attached.');
     Exit;
   end else begin
     Info('Device opened. Device handle is $'+inttohex(Integer(hWinUsbHandle),8));
      if WinUsb_Initialize(hWinUsbHandle, hWinUsbHandle) then begin
     Info('WinUSB Init Ok. WinUSB handle is $'+inttohex(Integer(hWinUsbHandle),8));
   end else begin
     Info('WinUSB Init Failed.');
     Exit;
   end;

   end;



end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenWinUSBDevice('\\.\\USB#VID_1004&PID_61F1&MI_04#6&173e569f&0&0004#{a6782bce-4376-4de2-8096-70aa9e8fed19}');

end;


Ama malasef başaramadım veri göndermeyi ve cihazdan çekmeyi bir türlü başaramadım yardımlarınızı bekliyorum şimdiden çok teşekkür ederim....
Cevapla
#2
USBye veri gönderip/alırken EndPoint'ler düzgün seçilmiş olmalı. Ayrıca EndPoint adreslerine de dikkat edilmeli.
Siz cihazdan pipe info'yu aldıktan sonra gelen bilgiye göre endpointlerin adresleri  $86 ve $04. Ama programın arayüzüne bakılırsa siz $01 ve $81 kullanıyorsunuz.
Problemin kaynağı burası olabilir.
There's no place like 127.0.0.1
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 148 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Video Oynatma Hakkında adelphiforumz 7 844 17-12-2025, Saat: 07:36
Son Yorum: mrmarman
  nduWlanAPI Kullanımı hakkında nurah 3 803 09-09-2025, Saat: 09:33
Son Yorum: RAD Coder
  AES Şifreleme Hakkında tmrksmt 25 5.845 06-09-2025, Saat: 22:12
Son Yorum: delphi.developer
  SuperObject dosyaları hakkında adelphiforumz 2 622 18-06-2025, Saat: 11:02
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi