Are you certain?
I think todbots port opening program:...
Sorry gbulmer but you're absolutely mistaken. I wish it were the case but have experimented myself with this recently sometime in the last 1 or 2 months. The serial baud rate consifuration parity bits, etc is set by the OS level and API through which it can be accessed is typically passing flags or struct to ioctrl() / similar. After finding (that same example program you mentioned) did not work to change the DTR I searched all through the OSX BSD header files for any option that reffered (or possibly could refer) to DTR.
There are a few - I tried them in the same C program. They do not affect either way the sending of DTR signal. Its always sent. And elsewhere theres absolutely no evidence that this feature can be switched off on this platform. Perhaps you may be getting confused with Linux or other BSD OS which may be known to have a working control for switching off the DTR signal.
However your suggestion about using out of band USB signal (commonly known as USB io call) instead of serial DTR seems pretty reasonable. Isnt that where you specify an address (in the USB space) to have a certain meaning for the device? Then it seems the right way of addressing the issue. Good work.
As for whats the difference between hard and soft reset. There are 2 kinds of answers to your question:
1)
Hard reset is understood to mean an electrical triggering by changing the voltage level on the reset pin. Therefore its "hard". Wheras "soft" reset must mean a reset at the software level. Typically in the case of most MCU device a soft reset is the triggered by calling an ASM / machine code instruction from somewhere in the loaded program code. That isnt specific and can occur in any place from the running machine code. In the bootloader code, the program code, the OS kernel loop (scheduler) or watchdog timer. An OS environment may mask / remap the reset instruction to block it (if kernel privelidge insufficient). Or to intercept the call and allow OS cleanup actions to take place beforehand (for example spin down the hard disk).
2)
Behaviour is very device dependant. Generally speaking in a soft reset a device can assume many pre-requisites eg power condition (vdd voltage level etc) are already met. So its not necessary for the device to go through every single initialization checks or to worry about waiting for those external conditions stabilize. A soft reset may save other additional time by skipping certain other initialization steps which either arent yet initialized or could not be taken for granted in a hard reset. In some cases it might be assumed that the circuit to which the device is connected was already initialized. Which again may save other time if those connected components may take a long time to initialize. Some MCU devices may have multiple levels of "soft" reset. Which can be as simple as setting the program counter to address 0x00. Or as comprehensive as a full hard reset. Sometimes a soft reset can even be more comprehensive that a hard reset, including flushing (clearing) IO buffers, closing open connections gracefully, telling the running program to quit (fn callback). Waiting for timers to expire, etc. These aspect all depend very heavily on what the data sheet specifies, and the manufacturer should make as clear as possible.