DTR = reset ?

I've got my first Arduino ( UNO R3 )
I'm running the current Arduino software on Windows 7 Home Premium, and solved the issue that "Getting Started 4. Install Drivers with Windows7" is slightly different for me: I turned a completely "unknown device" into COM3 (Arduino).

Got "blink" working immediately XD.

Next was to experiment with Serial.write();
Works rather well, except that whenever I open the serial monitor window, it seems to reset the UNO.

I read this is normal for Linux and Mac ( which means for me "not for Windows 7" )
and guess it has to do with some serial control signal ( DTR ?)

My question: Can I control this behavior on the PC side ?
Any hints for beginners to get started with Java JDK and COM, in respect to communicating with the UNO
a) How to start my own app without resetting the UNO ?
b) How to use this reset behavior actively ?
c) Am I in the right forum here ?

Works rather well, except that whenever I open the serial monitor window, it seems to reset the UNO.

Yep, that happens.

I read this is normal for Linux and Mac ( which means for me "not for Windows 7" )
and guess it has to do with some serial control signal ( DTR ?)

It happens on Windows, too. Yes, it does.

My question: Can I control this behavior on the PC side ?

Yes, and no. Yes, you can control it in your application. No, the serial monitor is not your application.

Any hints for beginners to get started with Java JDK and COM, in respect to communicating with the UNO

Look in the Playground for the Interfacing with Software section. Scroll down to find the Java section.

a) How to start my own app without resetting the UNO ?

Generally, this is done with a simple hardware mod. There are several different possibilities - some permanent, some removable.

It happens on Windows, too. Yes, it does... No, the serial monitor is not your application.

So there's no way to either tell SerialMonitor or Windows7 to have that serial line permanently in a non-resetting status?

Yes, you can control it in your application. Look in the Playground for the Interfacing with Software section.

Thanks, Paul I will have a look there, play around myself, and only come back when I'm stuck.

My goal is to start an application, connect to a long running Uno, and ask/read what it has done so far.
Neither plugging in the USB cable, nor starting the app and opening the COM port, should trigger a reset,
which invalidates all variables, AFAIK. I understand, variables are undefined at Setup(), and should be cleared there.

BTW: If SerialMonitor cannot really be used to test/simulate this communication, I could go for faster binary instead of ascii.
Any recommendation pro/con ? Is "faster" worth the pain of "not human readable data" ?

BTW: If SerialMonitor cannot really be used to test/simulate this communication, I could go for faster binary instead of ascii.

The Serial Monitor CAN be used, once you perform the hardware modification - permanent or reversible.

PaulS is referering to the Reset Enable trace that is between 2 solder pads.
If you cut the trace, then DTR is no longer connected, requiring manual intervention with the Reset Button to download sketches, not that big a deal.
(Press & hold reset, when the IDE indicates "Sketch xxxxx byte of 32xxx byte" (something like that) then release the button.)

You can later go back and solder the 2 pads together if you want to use DTR again.

The trace is in the little box next to the big crystal, labeled "RESET EN", or maybe "RE ET EN" if you look at Uno R3 picture in the hardware section.

CrossRoads: PaulS is referering to the Reset Enable trace that is between 2 solder pads.

I also found the hint to place a capacitor between GND and RESET ( + side to RESET ), found a 47µF in my box, and this has the same effect:
The Reset pulse from USB seems to come through a pulldown resistor and is too short to empty the capacitor enough to get RESET signal low.

For uploading, either remove the capacitor or keep the Reset button pressed until TX led flashes, which is probably about the same time as your message hint. Seems not very critical timing. I got it immediately.

Could it be possible to fine tune the capacitor to properly detect a different duration between the upload reset signal and the Serial Monitor duration?
Or are they the same length?

I don't like to scratch or iron my tiny and brand new Arduino baby yet.
Rather prefer a breadboard solution if there's no immediate "Protocols and Devices" solution.

Thanks for your helpful replies, PaulS and CrossRoads !

"Could it be possible to fine tune the capacitor to properly detect a different duration between the upload reset signal and the Serial Monitor duration?
Or are they the same length?"

Don't know, never tried something like that or looked at the signal.

You can install the cap in the Power Header pins after you get your program running.
Maybe add a toggle switch in series with it so you can leave it plugged in all the time and turn it off/on as needed.

"Could it be possible to fine tune the capacitor to properly detect a different duration between the upload reset signal and the Serial Monitor duration?
Or are they the same length?"

Don't know, never tried something like that or looked at the signal.

I know now :wink: ( If you're interested , search for my "Reset via USB" thread in the "Troubleshooting Arduino" forum )
The duration how long DTR is down, does not matter at all. It's the falling edge of that signal, which ( in conjunction with the internal 100nF in series + 10k Reset pullup) triggers a pulse of about 1 ms.

If you cut the trace, then DTR is no longer connected, requiring manual intervention with the Reset Button to download sketches, not that big a deal.
...
You can later go back and solder the 2 pads together if you want to use DTR again.

It's definitely the wrong forum, but I'm so proud of successfully solving "not that big a deal": I soldered a 2.2k resistor across the pads after cutting.
Now it still resets via DTR, but it's much easier to control this: any resistor around 1k between 5V and RESET inhibits the reset.
One can even find a software solution like

   digitalWrite(DONT_RESET_NOW, HIGH);

requiring only little wiring (capacitor, resistor, diode) between that signal, GND and Reset