is there any software working on PC with a gui that can control the outputs and read the inputs of an arduino in realtime?
As JohnC says, Firmata is probably what you want. Firmata is a special sketch you load onto your Arduino. It has a set of commands you send it over the Arduino's serial port to read and write the Arduino's inputs and outputs. There's a Processing library that you can use so you can write Processing apps to directly control the Arduino, as well as many other libraries for other computer languages running on your desktop computer (like the VB .NET one JohnC mentions). Even if you don't have a library, you can send the commands from any language that knows how to talk to serial ports (like with Max/Pd as Andrew mentions)
I like the Processing library because Processing is open source and similar to Arduino. A Processing sketch talking to a Firmata'd Arduino looks something like:
import cc.arduino.*; Arduino myArduino = new Arduino(this, "/dev/tty.usbserial", 57600); myArduino.digitalWrite(ledPin, Arduino.HIGH); delay(1000); myArduino.digitalWrite(ledPin, Arduino.HIGH);
Hey, are you are familiar with Max/MSP (paid) and Pure Data (free)? They are graphical programming environments.
I put together a tutorial to set it up if you're interested in testing it: http://www.soundplusdesign.com/?p=1305
I'd agree with the other answers, Processing is a good one because it's so similar to the Arduino environment. I use Max Msp 5 myself, and I can certainly recommend it, you can download it from the cycling74 website -> http://cycling74.com/downloads/
You get a free 30 day trial of the full version plus the runtime environment, it works on both mac os and windows. It's super easy to learn, and it allows you to program whilst your program is running! - no more compiling!
You can use an object called serial to talk with the Arduino, and Max comes packed with handy pre made objects and GUI components.
Plus you can then export stand alone applications, or you can share them in text format.
For those who have problems with Firmata's sysex and want to acess sysex comands easily:
Try http://connect.mind-craft.net/arduino-firmata-vb-class - change "storedInputData" variable to public and use it, e.g.:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Thread.Sleep(100) 'Delay less than a second
TextBox1.Text = arduino1.storedInputData(1)
use EchoString.ino example and read firmata protocol on wiki to add your own sysex command to Arduino.vb