On 8/16/19 11:11 AM, James Richters wrote:
Remember that interrupt reads are  blocking so the way to deal with them is to 
put them away from the main thread, in their own thread. The moment something 
is available from the device, then the main thread of your application is 
signaled to read a buffer with the device report data. So, I can see some 
thread programming in your future or,

I see I did not finish my sentence. What I had in mind is that you could use a library that already implements (using a thread I assume) a call with a timeout. I checked and it looks like the original libusb call that I used did have a timeout parameter that I hardcoded to 0 (infinite timeout). libusb report a timeout as an error code. That did not sit well with me and I preferred to use threads instead of time-out mechanism.

> Is there another way to do a read that has a timeout?

yes, it took only a few minutes to add the time-out parameter to the libusbhid_interrupt_read call. Have a look at the github repository for the updated version.


Can I even do threads in a console program?

Sure you can, here is one of the simplest example you can start with should you ever need to have multiple threads in your programs.

https://github.com/graemeg/freepascal/blob/master/packages/fcl-base/examples/threads.pp


--
_______________________________________________________
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to