The Setup:
Arduino UNO R3 (purchased from arduino.cc).
Arduino IDE 1.8.1 (also downloaded from arduino.cc).
Windows 8.1 64-bit.
The data points:
Arduino UNO R3 connects successfully as COM6 (device connect happy tone, Device Manager shows device working).
Arduino IDE can connect to Arduino UNO on COM6, sketches successfully download and execute .
Arduino sketch successfully transmits serial data to Serial Monitor.
My sketch uses the (capital S) Serial class for serial output (Serial.println).
Get this, Tera Term can successfully connect to Arduino UNO on COM6 but PrintCapture cannot. Why?
I've been in contact with Mike of PrintCapture tech support and we would like to solve this problem. We could use some pointers on where to begin. Specifically, the source code for the Atmel ATmega16U2 USB controller might be a good start (is GitHub://Arduino/hardware/arduino/avr/cores/arduino/USBAPI.h a good start?).
I've exhausted my search on these forums and online. Any help, pointers or opinions would be appreciated. Thanks.
johan34:
the source code for the Atmel ATmega16U2 USB controller might be a good start
The firmware for it is here:
However, I don't think that's going to be super relevant because there are Arduino boards that use FT232, CH340, PL2303, CP2102 USB-serial chips that also work fine so it's not like there's some specialized protocol running on the ATmega16U2.
johan34:
is GitHub://Arduino/hardware/arduino/avr/cores/arduino/USBAPI.h a good start?
I don't think so. That is used for the native USB boards like Leonardo and Pro Micro. It's not used on the Uno.
A common problem with PC connections to an Arduino is the fact that the Arduino resets when the Serial port is opened by the PC program. The PC program should allow time for that to happen and it should then keep the serial port open until it is completely finished with the Arduino. Many PC programs just open a serial port briefly and then close it again.
If that is the problem and assuming you can't modify your PC program it is possible to disable the auto-reset for an Arduino. Google should help you find the options.