What should i use – Keyspan 1.9 User Manual

Page 33

Advertising
background image

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:

Keyspan:High Speed USB Serial Adapter for Mac OS-v1.9 User Manual

This User Manual applies to the Keyspan High Speed USB Serial Adapter Software for Mac OS.

(rev 02may12JA)

Page 33

Advertising