Hi Fitz,
Sorry to hear about your troubles. Given your report, I agree that the problem seems to be in the detection of the TTL pulse from the camera. I have a couple of questions to try and debug the situation:
1. Which GPIO pin are you using to sample the TTL pulse? Is it pin 0?
2. Could you try saving the embedded hardware frame counter to make sure you are not missing camera frames? That is one reason I can imagine for seeing shorter pulses. To do this, you first need to enable the frame counter under "Advanced Settings" in the FlyCapture camera control dialog. Then you should be able to right-click on the FlyCapture source node in Bonsai and select the frame counter from Metadata->embeddedFrameCounter. Try saving that into a file using CsvWriter and check if the numbers are always consecutive.
3. Can you write the GPIO pin state to a file as well and plot it? I would be curious to know how much shorter the pulse really is. The Flea3 GPIO pins are sampled only in s single instant at the end of frame acquisition. This means that your TTL pulses should be always at least double the inter-frame interval, to make sure you don't lose the pulse. I would expect observed pulse durations to be off by at most 2 frames (one frame at onset, and one frame at offset) which in this case would be 16ms, but I agree that the observed pulse seems to be shortened by more than that. Again, curious to see how big is the difference.
Regarding synchronization through the serial port, it should work, but be aware that using Serial over USB will introduce a latency of at least ~10-20 ms because of protocol buffering. Anyway, the sketch you made seems to make sense. However, maybe the newline separator is not being correctly specified. Can you try using Serial.println() instead just so we can make it a bit more standard? Later you can set a custom newline separator in SerialStringRead in order to customize your own separator. Also, make sure that the baudrate of the port is set to identical values on both Arduino and Bonsai. In Bonsai you can set it by clicking in the "Manage Ports" button on the COM port selector.
Hope this helps making more progress,