Maximum Speeds with the Serial Port

One of the Newton 2.x OS Q&As
Copyright © 1997 Newton, Inc. All Rights Reserved. Newton, Newton Technology, Newton Works, the Newton, Inc. logo, the Newton Technology logo, the Light Bulb logo and MessagePad are trademarks of Newton, Inc. and may be registered in the U.S.A. and other countries. Windows is a registered trademark of Microsoft Corp. All other trademarks and company names are the intellectual property of their respective owners.


For the most recent version of the Q&As on the World Wide Web, check the URL: http://www.newton-inc.com/dev/techinfo/qa/qa.htm
If you've copied this file locally, click here to go to the main Newton Q&A page.
This document was exported on 7/23/97.


Maximum Speeds with the Serial Port (9/19/96)

Here are some rough estimates of the speeds attainable with the Newton serial port in combination with various kinds of flow control. These numbers are rough estimates, and depending on the protocol and amount of data (burst mode or not) you might get higher or lower transmission speeds. Experiment until you have found the optimal transmission speed.

• 0 to 38.4 Kbps
No handshaking necessary for short bursts, but long transmissions require flow control (either hardware or XON/XOFF).

• 38.4 Kbps to 115 Kbps
Require flow control, preferably hardware, but XON/XOFF should also work reasonably reliably.

• 115 Kbps +
You will encounter problems with latency and buffer sizes. Speeds in this range require an error correcting protocol.

Both hardware and XON/XOFF flow control can be set with the kCMOInputFlowControlParms and kCMOOutputFlowControlParms options. In the case of hardware handshaking (RTS/CTS) you should use the following options:

{    label:    kCMOInputFlowControlParms,
    type:        'option,
    opCode:    opSetRequired,
    data:        {    arglist: [
                        kDefaultXonChar,
                        kDefaultXoffChar,
                        NIL,
                        TRUE,
                        0,
                        0,    ],
                    typelist: ['struct,
                        'byte,
                        'byte,
                        'boolean,
                        'boolean,
                        'boolean,
                        'boolean,    ],
                },
},

{    label:    kCMOOutputFlowControlParms,
    type:        'option,
    opCode:    opSetRequired,
    data:        {    arglist: [
                        kDefaultXonChar,
                        kDefaultXoffChar,
                        NIL,
                        TRUE,
                        0,
                        0,    ],
                    typelist: ['struct,
                        'byte,
                        'byte,
                        'boolean,
                        'boolean,
                        'boolean,
                        'boolean,    ],
                },
}