> While I can't explain why I have never seen a USB application be truly
> reliable - for some reason every now and again things need to be
> unplugged or power cycled. This has been the case with FTDI chips
> talking to PCs, pretty much every USB debugging tool I've ever owned,
> printers, mice, my home weather station talking to a PC running some
> kind of Ubuntu (forgotten which) etc etc.
I have been working with USB on an industrial product, and I have
found USB to be
highly unsuited for the task. On paper, it seems that USB is an ideal
way to move
on from RS232 connections. It's cheap and universal, what is not to
like ?
In practice, USB is very susceptible to the typical noise
you get inside industrial boxes, and it is very hard to filter
effectively.
In addition, after a certain number of bad packets, the protocol gives
up, and the
device becomes unusable without manual intervention to recover it.
Neither the application
nor device appear to have any way to recover after the failure. I
guess there might be
some non-standard tricks, but the guts of the interface are buried in
device drivers or
chipset on the application side. Creating a non-standard device
behaviour may be OK
if you have a bespoke host application, but the U in USB is supposed
to stand for
Universal. Cynics refer to it as the Unusable Serial Bus.
> I would be very cautious - why not use Ethernet (quick look found no
> rs232 support on the QA board). Can handle your data rate easily and is
> usually much more reliable.
People are often disappointed with the actual throughput of USB CDC
devices. There are
ways to get better throughput, but then you start to lose
compatibility again. Writing and
supporting device drivers for every version of Windows plus Unix is
not very appealing.
For this and all the reasons mentioned, I think ethernet is probably a
much better choice
for industrial grade applications.