Keyspan:High Speed USB Serial Adapter for Mac
Notes about the Work Around
In most situations, the serial adapter's lie is harmless or beneficial, even. However, in some circumstances, this lie gets us into trouble. There are several ways this can happen:
Flow control: If the adapter is programmed to use flow control, the remote (receiving) end of the serial connection can ask the adapter to suspend its data transmission (e.g. if it's not ready to receive more data). Since this state can persist indefinitely, the "I'm done" indication, if it were sent early, could arrive at the host a significant amount ahead of time. As a result, the application might use the "I'm done" signal as an indication that the remote end is ready, leading to various kinds of trouble.
Data flushing: Sometimes, an application will issue a "transmit flush" command to the adapter get rid of extra data. For example, let's say that an application sends "AAAA" to the adapter, and then, once it's received the "I'm done" indication, sends "BBBB." Now, let's say that some time after sending "BBBB," the application decides to cancel whatever part of the "BBBB" has yet to leave the serial port, and sends a "transmit flush" command to the adapter. If the adapter had been lying about being done sending "AAAA," it might still not be done, and the flush could purge the transmit FIFO of some of the A's (which is not what the application was expecting) in addition to the B's.
Timing: In some applications, the receipt of the "I'm done" indication is used as a timing reference point. For example, an application could send a data stream like this:
COMMAND................................................................
The extra periods following COMMAND would be just used to establish a timing interval: the application would know that once the serial port said "I'm done," the receiver would have had at least 64 character times to process COMMAND. If the "I'm done" indication was sent early, the application might then do its subsequent action too early.
Another possibility is that the application is using the timing of the "I'm done" message to determine the baud rate. For example, if the serial port was using external clocking, the application might not know what baud rate was being used, so it would send a message and see how long it took. The early delivery of "I'm done" could screw up its calculation.
There are many other communication protocols in which time periods are counted from the point that a message has been delivered. Any time you change the timing of the "I'm done" indication, you run the risk of interfering with such protocols.
What Should I Use?
There are various ways you can configure Tx Ack Advance. Following is a discussion of some possibilities:
This User Manual applies to the Keyspan High Speed USB Serial Adapter Software for Mac OS.
(rev 02may12JA)
Page 33