This Test version has no real image acquisition inside, because I can't get the endpoints 0x83 and 0x85 talking.
I tried to reproduce the Linux code samples, but I guess, I make something wrong with the pipe handling.
The first step is get EP 0x85 deliver Frames.
I guess the Exception text above is just a follow-up from the not working transmission.
You are using the WinUsb API functions, right? I happen to be using Visual Basic 6, and I believe I can use WinUsb in VB6, as well (no dot-net programming languages like C# are required for just using WinUsb). And I'm working on duplicating the basic parts of your project in VB6, but the problem is I haven't learned C#, so I don't know how to interpret all of the different parts of your program. I need to know how your program works at its most basic level, in order to port that functionality over to VB6 code.
My problem is figuring out how to send and receive raw data over USB.
My program does 2 things so far. It uses CreateFile to get a handle to the USB device itself (in this case the FLIR One), and then uses WinUsb_Initialize to get a handle to WinUsb (which I believe is a handle to the main interface of the USB device). Now that I have this handle, I should be able to read and write data to the FLIR One. However, I still need to figure out which WinUsb are used to read and write raw data to the USB port. I think I need to find something called "end points" in order to read and write, but I don't know how to find these "end points". What WinUsb functions do I need to use to find these "end points"?
Note that I've skipped the step of using the SetupDi functions in my program, and instead used RegEdit to search through the registry to find the symbolic device path that is needed to be used as the FileName in the CreateFile function. I have hardcoded this path into my program, so I don't need to worry about all of the extra mess that comes from using the SetupDi functions.