|
What is flow control? What is RTS/CTS? What is Xon/Xoff?
Flow control refers to the control of data flow between modems, or between the modem and the CPU. It is the method used to handle data in the FIFO buffer and how data flow between the modems is started and stopped. Often, one modem is capable of sending data much fasterthan the other can recieve. Flow control allows the slower device to tell the faster device to pause and resume data transmission.
There are two ways to handle flow control: hardware (RTS/CTS) and software (Xon/Xoff). Hardware flow control is called so because the control is handled by the hardware. That is, the circuitry design is such that when the the UART or the CPU is ready to receive data, it sends a Clear To Send signal to the device on the other end. On the other hand, when a device has something it wants to send, it sends a Ready To Send, and waits for a CTS to come back its way. These signals are sent apart from the data itself on separate wires.
The earlier standard in flow control was via software, in which the signal to start and stop the flow of traffic is sent as part of the data. The front of the data stream has an "Xon" signal, and the "Xoff" is the caboose. This type of flow control has a large margin of error. If an Xon signal is lost or corrupt, all the data sent will be lost, since the receiving device has to wait for the next Xon character to even start paying attention to the signal. Or if the data includes a pause, typically Ctrl-S, the data flow will stop and the connection will hang until the resume is sent (Ctrl-Q). Binary files can never be sent with software flow control, since they may contain these start/stop characters. Even when software control is working and line noise and the data don't cause problems, data transmission is slowed down by all the separate start and stop bytes.
It is commonly thought that winmodems should be set to software flow control. Setting a winmodem for software flow control is only meant to take some strain off of the processor, which is performing the function of the UART, but it doesn't necessarily improve your connection, since more data is lost and has to be retransmitted. In other words, try to solve your problem using hardware flow control, and avoid winmodems like the plague.
.
|
|
|
|