I had "Use STATIC in objects" turned on in compiler setings.. once I turned that off I was able to compile libusbutil.pas successfully.
Now when I try to run it though, I am getting : Couldn't connect to device: Access violation I don't know why. I don't really know what I am doing.. but here is what I did so far... I ran test1library (which also has the line Write('->',PortPath[J]); in it... I changed the J to an I again) I got the list of devices, then I plugged in the one I am trying to access and ran Test1library once again... then I saw the new device in the list, which was this one: Bus 2 Device 62: ID 10CE:EB93, port: 2, port path from HCD: 0->1, Speed: 12 Mbit/s (USB FullSpeed) So I changed the lines in testcontrolsync.pas as follow: Const WHB04B_VID= $10CE; WHB04B_PID= $EB93; Const DevVID = WHB04B_VID; DevPID = WHB04B_PID; Then I get this output: Running "i:\programming\pas-libusb_test_dll\src\examples\test2controlsync.exe " Bus 002 Device 062: ID 10CE:EB93 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor $10CE idProduct $EB93 bcdDevice 1.00 iManufacturer 1 KTURT.LTD iProduct 0 iSerialNumber 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 27 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes $80 MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 3 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Unknown descriptor type $21 with length 9 So that looks promising... I don't know about the unknown descriptor, but at least I have some information that seems reasonable. With the same modifications to test3controlasync.pas I get this: Running "i:\programming\pas-libusb_test_dll\src\examples\test3controlasync.exe " Submitting control transfer Finished Transfer, Data = 38, Status = 0, ActualLength = 18 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor $10CE idProduct $EB93 bcdDevice 1.00 iManufacturer 1 iProduct 0 iSerialNumber 0 bNumConfigurations 1 Done. So I again put my device VID and PID into test_arduino_with_bmp280.pas and got this: Running "i:\programming\pas-libusb_test_dll\src\examples\test_arduino_with_bmp280.exe " No unconfigured devices found. Couldn't connect to device: No configured devices found. I suspect it has something to do with the firmware.ihx file mentioned in the comments, but I do not understand how to get that file. It says to compile EZ-USB, but I don't know what to do with it.. When I say I compiled it, I am referring to EZUSB.PAS that is included in pas-libusb... but that is just a unit, and I don't know how I could use that to create this firmware.ihx file. What is the correct procedure to obtain firmware.ihx? Is there something else I need besides the EZUSB unit that would use that unit to create this file? James -----Original Message----- From: fpc-pascal <fpc-pascal-boun...@lists.freepascal.org> On Behalf Of James Richters Sent: Thursday, August 8, 2019 9:37 PM To: 'FPC-Pascal users discussions' <fpc-pascal@lists.freepascal.org> Subject: Re: [fpc-pascal] USB Human Interface Devices I changed the VID and PID to match the device I am trying to use and I was able to successfully compile and run test2controlsync.pas and test3controlasync.pas, but when I tried to use my VID and PID in test_arduino_with_bmp280.pas I can't even compile it.. using the x86_64-win64 Text IDE I get the following: Warning: PIC directive or switch ignored Hint: End of reading config file I:\Programming\FPC\W64_Trunk\Bin\x86_64-win64\fp.cfg libusbutil.pas(35,63) Error: Constructor name must be INIT libusbutil.pas(45,78) Error: Constructor name must be INIT libusbutil.pas(58,50) Error: Constructor name must be INIT libusbutil.pas(73,108) Error: Constructor name must be INIT libusbutil.pas(76,1) Fatal: There were 4 errors compiling module, stopping libusbutil.pas(0) Fatal: Compilation aborted Anyone know what this means and how I might fix it? James -----Original Message----- From: fpc-pascal <fpc-pascal-boun...@lists.freepascal.org> On Behalf Of James Richters Sent: Thursday, August 8, 2019 8:20 PM To: jean.suzin...@wanadoo.fr; 'FPC-Pascal users discussions' <fpc-pascal@lists.freepascal.org> Subject: Re: [fpc-pascal] USB Human Interface Devices I finally got the text IDE working with x86_64-Win64! I was thinking of making a bug report on the problem with the Text IDE but before I did that I thought I would test the current Trunk, and surprisingly that worked just fine! so I got my settings all put in it and I was able to compile my project with it. So the next thing I thought I would do is use the IDE to compile the pas-libusb_test_dll examples. With the IDE it was easier to just copy the units into the same directory as the files. I started with test1library.pas... it compiled fine so I ran it, and here's what I got.... Running "i:\programming\pas-libusb_test_dll\src\examples\test1library.exe " Using libusb(x) v1.0.22.11312 Found 23 devices: Bus 3 Device 0: ID 1B21:2142, port: 0, Speed: Unknown Bus 1 Device 0: ID 1B21:2142, port: 0, Speed: Unknown Bus 2 Device 14: ID 1B1C:0C10, port: 3, port path from HCD: 0An unhandled exception occurred at $0000000100001DC8: ERangeError: Range check error $0000000100001DC8 main, line 82 of ../../pas-libusb_test_dll/src/examples/test1library.pas -> so this was strange... it was working before line 81 For J := 1 to Length(PortPath)-1 do line 82 Write('->',PortPath[I]); Line 82 is using variable I but it's in a loop that uses J, I didn't think that made a lot of sense.. so without really analyzing how any of this was supposed to work.. I just changed the I to a J and then I got this: ->Running "i:\programming\pas-libusb_test_dll\src\examples\test1library.exe " Using libusb(x) v1.0.22.11312 Found 23 devices: Bus 3 Device 0: ID 1B21:2142, port: 0, Speed: Unknown Bus 1 Device 0: ID 1B21:2142, port: 0, Speed: Unknown Bus 2 Device 14: ID 1B1C:0C10, port: 3, port path from HCD: 0->7, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 8: ID 1B1C:0C12, port: 10, port path from HCD: 0, Speed: 12 Mbit/s (USB FullSpeed) Bus 1 Device 1: ID 1D50:6015, port: 3, port path from HCD: 0, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 58: ID 0424:274C, port: 5, port path from HCD: 0->5->1, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 62: ID 10CE:EB93, port: 2, port path from HCD: 0->1, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 57: ID 047D:1020, port: 3, port path from HCD: 0->5->1, Speed: 1.5 Mbit/s (USB LowSpeed) Bus 2 Device 44: ID 0C45:7403, port: 2, port path from HCD: 0->5, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 6: ID 051D:0002, port: 3, port path from HCD: 0, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 36: ID 04E8:61F5, port: 1, port path from HCD: 0->17, Speed: unknown (4) Bus 2 Device 59: ID 1B1C:1B4F, port: 4, port path from HCD: 0->5->1, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 5: ID 05E3:0608, port: 7, port path from HCD: 0, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 7: ID 05E3:0608, port: 8, port path from HCD: 0, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 13: ID 1B1C:1C08, port: 2, port path from HCD: 0->7, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 1: ID 0BDA:0411, port: 17, port path from HCD: 0, Speed: unknown (4) Bus 2 Device 42: ID 1A40:0101, port: 5, port path from HCD: 0, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 0: ID 8086:A2AF, port: 0, Speed: Unknown Bus 2 Device 56: ID 0424:2734, port: 1, port path from HCD: 0->5, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 15: ID 05E3:0610, port: 4, port path from HCD: 0->7, Speed: 480 Mbit/s (USB HighSpeed) Bus 2 Device 61: ID 0E50:0002, port: 4, port path from HCD: 0, Speed: 1.5 Mbit/s (USB LowSpeed) Bus 2 Device 41: ID 0A5F:0006, port: 2, port path from HCD: 0, Speed: 12 Mbit/s (USB FullSpeed) Bus 2 Device 2: ID 0BDA:5411, port: 1, port path from HCD: 0, Speed: 480 Mbit/s (USB HighSpeed) Looks like it worked fine with line 82 reading: Write('->',PortPath[J]); I'm perplexed at how this could have possibly worked before... So is it supposed to be Write('->',PortPath[J]); and the I was just a typo, or is something else going on here? _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal