I'm don't believe the title of this post fully captures the problem I am experiencing, so let me explain a little more. I am trying to interface with a bunch of devices in LabVIEW, Two of my devices are custom built and use RS422-to-USB adapters and another 4 devices are COTS devices that use USB. Thus, all of my devices are connected to my computer through USB (via two externally powered 8-port hubs). I am essentially reading data from my custom built devices and then using that data to control 4 other COTS devices. My custom built devices are both running at 3.6 Mbps and reading data from them with nothing else connected works just fine. The problems start to occur when I begin connecting the COTS devices. As I connect and attempt to interface with them, I start to experience issues in interfacing with my two custom devices. Specifically, one or both of the devices start to throw overrun errors to the point that the data streams become useless. Additionally, I also sometimes experience what is best described as a phantom mouse problem. My mouse starts moving around and clicking on it's own (opening programs, resizing windows, etc...). I'm assuming this is probably the USB driver bugging out. The only way to stop it is to disconnect all USB devices from the machine.
Has anyone experienced anything like this before? Can anyone suggest ways to trouble these issues? I'm kind of at a loss on what to do?
Solved! Go to Solution.
I have no real information about your specific problems. But your computer will probably have multiple USB controllers and you should try to plug your hubs into seperate controllers to split the usb load. It might take a little digging through a manual or the internet to figure out which ports belong to which controller.
Lets back -burner the "Phantom Mouse" for a moment and concentrate on the device overrun errors.
This is typically the result of data being generated on the far end faster than it is being read into your application. You noted that the comms here were "Good" until you started using additional devices.
The first thing I would look for are "Greedy Loops" These are loops that have no means to throttle down the CPU usage and are fairly easy to write in LabVIEW. Put a bunch of them in parallel and your OS will do some very strange things. Some of those things may be delaying responses to user actions like mouse banging.
What does the Task manager show you while the program is running? And, what are these COTS devices?
Placing all of the COTS devices on a hub attached to one single USB port on the machine and my custom devices on the other ports seems to have fixed the problem. I haven't conforimed the port assignments yet, but my machine does have two USB controllers and it appears that one port is on on and the other two are on the other.