I basically want to control a hardware device from a SW program in my computer. I would like to control the device via one USB I/O board. I'm quite new on this so I would like to ask for your advice because I'm not sure if Arduino 2009 is the solution.
As far as I've seen in the web, there are many boards with a microcontroller (e.g PIC18F4550) which provide USB connector to program the microcontroller. Once programmed via bootloader, it is the MC who interacts with the external device and controls de I/O pins (there is no further communication or control with/from the computer).
But in my case, I would like to have a USB board which merely interfaces between the external device and my software running in a computer, acting as a I/O bridge. That is, the control software would be in the computer, and signals would be sent to the external device via the I/O board.
Is Arduino 2009 valid for this? If so, could you give me some hints to start with (if possible)? If not, do you know about any other suitable Arduino board I could use?
Most programming languages, and many applications, allow sending and receiving serial data.
The Arduino does, too.
So, if your application, on the PC, can send and receive serial data, or can be made to, then, it can communicate with the Arduino.
What you make it send, and how you make the Arduino react to what was received is limited only by your imagination and skills. And, maybe a little by the limitations imposed by the Arduino itself (memory, speed, etc.).
Just to make it clear, then I can communicate with the Arduino via USB, and then I need some program on the Arduino to, so to say, interpret the inputs from the PC and transmit the desired signals to the device plugged to its outputs, right?
That is, the whole thing works with Arduino connected to the PC at all moments (that was my main question, I do not want to program the Arduino and then use it unplugged from the computer because the SW is too complex for embedding it into the board)
The answer to your question is "yes"; as long as within your application you can abide by the limits of the USB serial speed and such (and the limitations of the Arduino hardware, as Paul noted).
If you need a speedier interface (faster than USB serial), there are other options available there, too (Ethernet or WiFi, Bluetooth). Most applications do fine with USB serial.
You can set up the Arduino to control many things, but if you need a fully embedded solution, then develop the application using the Arduino, then set up a "standalone" version of the Arduino on your custom PCB as the "embedded" version (unless this is a "one-off" standalone application, where you're not going to need to make multiples of the device - then just embed the entire Arduino if your hardware enclosure has the space).