[Lazarus] Communication USB, Lazarus et MAC OS X

Mattias Gaertner nc-gaertnma at netcologne.de
Tue May 26 14:15:43 CEST 2009


On Tue, 26 May 2009 13:58:14 +0200
S├ębastien FLOURETTE <sebastien.flourette at gmail.com> wrote:

> Hi,
> 
> I need again help !!
> 
> I have create a simple library in C compiled with GCC in mylibusb.o
> 
> The code is :
> #include <usb.h>
> 
> 
> myusb_open(usb_dev_handle *udev)
> {
>    struct usb_bus *bus;
>    struct usb_device *dev;
>    char buff[64];
>    int i;
> 
>    //Initialisation du bus USB
>    usb_init();
>    usb_find_busses();
>    usb_find_devices();
> 
>    for (bus = usb_busses; bus; bus = bus->next)
>    {
>       for (dev = bus->devices; dev; dev = dev->next)
>       {
>          if ((dev->descriptor.idVendor == 0x04D8) &&
> (dev->descriptor.idProduct == 0x1985))
>          {
>             udev = usb_open(dev);
>          }
> 
>            }
> 
>        }
> }
> 
> 
> myusb_close(usb_dev_handle *udev)
> {
>    usb_close(udev);
> }
> 
> 
> myusb_write(usb_dev_handle *udev)
> {
>    usb_bulk_write(udev, 0x01, 0x01, 64, 1000);
> }
> 
> 
> I link this myusblib.o with my lazarus program :
> 
> 
> unit usb_api;
> 
> 
> 
> interface
> 
> 
>      function myusb_open(udev : thandle);cdecl;
>      procedure myusb_close(udev : thandle) ; cdecl;
>      procedure myusb_write(udev : thandle); cdecl;

Maybe you forgot the 'var':
  function myusb_open(var udev : thandle);cdecl;
?

I don't know your C macros (who knows?), but are you sure myusb_open is
a function (or maybe a procedure)?


> implementation
> 
> {$link myusblib.o}
> {$linklib usb}
> {$linklib c}
> {$linklib gcc}
> 
> 
> uses CTypes;
> 
> function myusb_open; cdecl; external;
> procedure myusb_close; cdecl; external;
> procedure myusb_write; cdecl; external;
> end.
> 
> 
> 
> and when I do
> 
> var
> myhost : thandle;
> 
> begin
> myusb_open(myhost);
> myusb_write(myhost);
> myusb_close(myhost);
> end;
> 
> I have no communication with my usb board. My libusb.o work with the
> same program in C.
> 
> Have you got an idea on my problem or can you tell me if you have
> another solutions.
> 
> Is it possible to create a library Dll for windows and MAC OS and How
> can I do it with the libusb library?


Mattias




More information about the Lazarus mailing list