USB Port tanımlama

Kaos-220
02-02-2007, 21:59   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
284 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

SLM arkadaşlar USB portu nasıl tanımlarım ve kotrol ederim?

(Detaylı anlatırsanız sevinirim)

cevaplarınız için TŞK

3DART
17-02-2007, 22:35   |  #2  
Yeni Üye
Teşekkür Sayısı: 0
36 mesaj
Kayıt Tarihi:Kayıt: Eki 2006

http://www.vbcode.info/viewtopic.php?t=20

Bu linkte bir USB uygulaması var...
Bir USB üniti ve bu ünit yardımıyla bilgisayara USB nin takılıp çıkarıldığını algılayan örnek program...

Bir nevi işini görür...

3DART
17-02-2007, 22:39   |  #3  
Yeni Üye
Teşekkür Sayısı: 0
36 mesaj
Kayıt Tarihi:Kayıt: Eki 2006

Bir noktayı kaçırdım...

Bu linki görebilmek için üye olmalısın...
Bu yüzden buraya kopyalıyorum...

unit U_Usb;

interface

uses
Windows, Messages, SysUtils, Classes, Forms;

type

PDevBroadcastHdr = ^DEV_BROADcast_HDR;
DEV_BROADcast_HDR = packed record
dbch_size: DWORD;
dbch_devicetype: DWORD;
dbch_reserved: DWORD;
end;

PDevBroadcastDeviceInterface = ^DEV_BROADcast_DEVICEINTERFACE;
DEV_BROADcast_DEVICEINTERFACE = record
dbcc_size: DWORD;
dbcc_devicetype: DWORD;
dbcc_reserved: DWORD;
dbcc_classguid: TGUID;
dbcc_name: array [0..255] of char;
end;

const
GUID_DEVINTERFACE_USB_DEVICE: TGUID =
'{A5DCBF10-6530-11D2-901F-00C04FB951ED}';
DBT_DEVICEARRIVAL = $8000; // system detected a new device
DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone
DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface class

type

TComponentUSB = class(TComponent)
private
FWindowHandle: HWND;
FOnUSBArrival: TNotifyEvent;
FOnUSBRemove: TNotifyEvent;
fDeviceName:String;
procedure WndProc(var Msg: TMessage);
function USBRegister: Boolean;
protected
procedure WMDeviceChange(var Msg: TMessage); dynamic;
public
property DeviceName:String read FDeviceName;
constructor create(AOwner: TComponent); override;
destructor Destroy; override;
published
property OnUSBArrival: TNotifyEvent read FOnUSBArrival write
FOnUSBArrival;
property OnUSBRemove: TNotifyEvent read FOnUSBRemove write FOnUSBRemove;
end;
procedure Register;
implementation

procedure Register; { add this in the implementation section }
begin
RegisterComponents('Samples', [TComponentUSB]);
end;


constructor TComponentUSB.create(AOwner: TComponent);
begin
inherited create(AOwner);
FWindowHandle := AllocateHWnd(WndProc);
USBRegister;
end;

destructor TComponentUSB.Destroy;
begin
DeallocateHWnd(FWindowHandle);
inherited Destroy;
end;

procedure TComponentUSB.WndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_DEVICECHANGE) then
begin
try
WMDeviceChange(Msg);
except
Application.HandleException(Self);
end;
end
else
Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam,
Msg.lParam);
end;

procedure TComponentUSB.WMDeviceChange(var Msg: TMessage);
var
devType: Integer;
Datos: PDevBroadcastHdr;
begin
if (Msg.wParam = DBT_DEVICEARRIVAL) or (Msg.wParam =
DBT_DEVICEREMOVECOMPLETE) then
begin
Datos := PDevBroadcastHdr(Msg.lParam);
devType := Datos^.dbch_devicetype;
if devType = DBT_DEVTYP_DEVICEINTERFACE then
begin // USB Device
if Msg.wParam = DBT_DEVICEARRIVAL then
begin
if Assigned(FOnUSBArrival) then
FOnUSBArrival(Self);
end
else
begin
if Assigned(FOnUSBRemove) then
FOnUSBRemove(Self);
end;
end;
end;
end;

function TComponentUSB.USBRegister: Boolean;
var
dbi: DEV_BROADcast_DEVICEINTERFACE;
Size: Integer;
r: Pointer;
begin
Result := False;
Size := SizeOf(DEV_BROADcast_DEVICEINTERFACE);
ZeroMemory(@dbi, Size);
dbi.dbcc_size := Size;
dbi.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;
dbi.dbcc_reserved := 0;
dbi.dbcc_classguid := GUID_DEVINTERFACE_USB_DEVICE;
dbi.dbcc_name := dbi.dbcc_name;
fDeviceName := String(dbi.dbcc_name);
r := RegisterDeviceNotification(FWindowHandle, @dbi,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if Assigned(r) then Result := True;
end;


end.


bu componenti ister delphi idesine yukleyin ya da asagidaki gibi kullanin.

Kod:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,U_Usb, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Formcreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
usb:TComponentUSB;
procedure BellekCikti(Sender: TObject);
procedure BellekTakildi(Sender: TObject);

{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BellekCikti(Sender: TObject);
begin
ShowMessage('bellek çıktı');
end;

procedure TForm1.BellekTakildi(Sender: TObject);
begin
ShowMessage('bellek takıldı:');
end;

procedure TForm1.Formcreate(Sender: TObject);
begin
usb:=TComponentUSB.create(self);
usb.OnUSBArrival := BellekTakildi;
usb.OnUSBRemove := BellekCikti;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(usb);
end;

end.

ALINTIDIR...

yasemin_gulnur_003
06-03-2007, 11:12   |  #4  
Taze Üye
Teşekkür Sayısı: 0
6 mesaj
Kayıt Tarihi:Kayıt: Mar 2007

Mrb arkadaşlar ben erzincan üniversitesi bilgisayar bölümünde okuduğum için delphide usb ye bağlı 3 veya 5 tane lad çalıştıracağım delphiye bağlı usb componentini bulamıyorum bana yardımcı olursanız sevinirimmm...

Çok Tşk ederimmm....

Kaos-220
13-04-2007, 20:09   |  #5  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
284 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

kardeş bu kodu hangi siteden indirdin... TŞK