نمایش نتایج 1 تا 7 از 7

نام تاپیک: ارتباط با پورت USB

  1. #1

    ارتباط با پورت USB

    با سلام خدمت دوستان

    من می خواهم که توسط دلفی با پورت USB ارتباط برقرار کنم. آیا می توانید مرا راهنمایی کنید. البته کامپوننت
    nrcomm_lib را دانلود کرده ام اما چون نسخه آزمایش است کار نمی کند.
    آیا دوستان کامپوننت یا نمونه برنامه ای برای ارسال و دریافت اطلاعات به پورت USB سراغ دارند؟

    خیلی ممنون

  2. #2

    نقل قول: ارتباط با پورت USB

    واقعاً تا حالا کسی از دوستان با USB کار نکرده ؟

  3. #3
    کاربر دائمی آواتار Mah6447
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    گرگان
    پست
    210

    Smile نقل قول: ارتباط با پورت USB


    https://barnamenevis.org/showthread.php?t=59112

    برای اطلاع از وضعیت ارتبات یواس بی ( Detect Usb ) :

    // Component to detect when usb devices are connected or disconnected
    // using RegisterDeviceNotification

    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: short;
    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;
    procedure WndProc(var Msg: TMessage);
    function USBRegister: Boolean;
    protected
    procedure WMDeviceChange(var Msg: TMessage); dynamic;
    public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    published
    property OnUSBArrival: TNotifyEvent read FOnUSBArrival write FOnUSBArrival;
    property OnUSBRemove: TNotifyEvent read FOnUSBRemove write FOnUSBRemove;
    end;

    implementation

    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 := 0;

    r := RegisterDeviceNotification(FWindowHandle, @dbi,
    DEVICE_NOTIFY_WINDOW_HANDLE
    );
    if Assigned(r) then Result := True;
    end;

    end.

  4. #4

    Lightbulb نقل قول: ارتباط با پورت USB

    برای این کار این کامپوننت رو می ذارم.
    موفق باشی.
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip usb.zip‏ (83.1 کیلوبایت, 151 دیدار)

  5. #5

    نقل قول: ارتباط با پورت USB

    ممنون از راهنمکایی دوستان
    می روم که آزمایش نمایم

  6. #6

    نقل قول: ارتباط با پورت USB

    آقا صالح. ممنون از کامپوننتی که گذاشته بودبد.
    نمی دانم آیا شما خودتان با آن کار کرده اید یا نه ؟
    چون من کامپوننت را نصب کردم و برنامه نمونه انرا اجرا کردم اما حتی دستگاه متصل به پورت یو اس بی را هم نمی شناسد چه برسد به ارسال و دریافت دیتا.
    آیا می توانید کمی راهنمایی کنید.
    بسیار ممنون.

  7. #7

    نقل قول: ارتباط با پورت USB

    شما با این کامپوننت می تونید شناسایی کنید ببیند که یو اس بی متصل شد یا نه؟
    جهت ارسال و دریافت اطلاعات پس از شناسایی درایو یو اس بی متصل شده می بایست ارسال و دریافت را خودتان با دلفی طراحی کنید بر اساس آنچه که نیاز دارید
    با این تابع می توانید لیست یو اس بی های فعال را لیست کنید.
    Function RemovableDrive: string;
    var
    Drive: Char;
    d:String;
    begin
    d:='';
    for Drive := 'A' to 'Z' do
    if (Windows.GetDriveType(PChar(Drive + ':\')) = Windows.Drive_Removable) then
    d:=d+Drive;
    Result:=d;
    end;

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •