Re:Nubsio GPIO API – A Windows USB interface for controlling...
by LeifCarrotson on Monday April 03, 2017 @01:31PM
(#14025005)
First, love your username. And it's impressive to get this level of a product together!
> Regarding the IO polling issue, I do not think this can be address with a Windows PC or Linux on the Raspberry PI. I tested the USB interrupt for the FTDI FT4222 and this is not very impressive.
Yeah, that's not the right approach. As a controls engineer who builds PC-based test and manufacturing equipment, this is your competition:
These can be programmed with .NET languages and C/C++ using Measurement Studio, or graphically through LabView.
I think the critical differences are (1) using USB directly, rather than a serial emulator, enabling much higher data rates - you don't necessarily need this yet, low-speed is probably fine and (2) using internal FIFOs and Tasks to control IO instead of handling each bit over the connection.
Essentially, what you want to do is push all the real-time stuff off to the microcontroller on the peripheral, and only synchronize every couple hundred milliseconds with the PC, which will essentially take in a large buffer with the history of the inputs at 1 kHz or more, and output a similarly sized buffer with the data to be encoded on the outputs until the next synchronization. Anything that needs to happen faster than that needs to be set up before hand.
> Regarding the IO polling issue, I do not think this can be address with a Windows PC or Linux on the Raspberry PI. I tested the USB interrupt for the FTDI FT4222 and this is not very impressive.
Yeah, that's not the right approach. As a controls engineer who builds PC-based test and manufacturing equipment, this is your competition:
http://www.ni.com/pdf/manuals/374369a.pdf
http://www.ni.com/pdf/manuals/374566d.pdf
These can be programmed with .NET languages and C/C++ using Measurement Studio, or graphically through LabView.
I think the critical differences are (1) using USB directly, rather than a serial emulator, enabling much higher data rates - you don't necessarily need this yet, low-speed is probably fine and (2) using internal FIFOs and Tasks to control IO instead of handling each bit over the connection.
Essentially, what you want to do is push all the real-time stuff off to the microcontroller on the peripheral, and only synchronize every couple hundred milliseconds with the PC, which will essentially take in a large buffer with the history of the inputs at 1 kHz or more, and output a similarly sized buffer with the data to be encoded on the outputs until the next synchronization. Anything that needs to happen faster than that needs to be set up before hand.