Serial ports
Isis software documentation
Serial ports
This document explains the routines for configuring terminal
attributes and doing RS-232 serial communication in Isis.
Opening and initializing a serial port
(initialize-serial-port port baud databits stopbits parity flow)
In Unix, you can open a serial port on your machine for reading and
writing simply by opening a file in the "/dev" directory of
the filesystem using the Isis open- routines.
Usually, the first serial port on your computer will correspond to the
file name "/dev/ttyS0", and the second will be
"/dev/ttyS1", and so on, but check with your system
administrator if you are unsure.
After you open the file, you can initialize the RS-232 attributes of
the port using initialize-serial-port. The port
argument should be the newly-obtained Isis port that connects to that
serial port. baud should be an integer baud rate (only
standard baud rates are allowed, so check what your computer is
capable of). databits should be an integer number of data
bits, and stopbits should be the number of stop bits.
parity should be Null for no parity, the string
"even" for even parity, or "odd" for odd parity.
Finally, flow should be either True or
False indicating whether RTS-CTS flow control should be used.
The following example opens the serial port for reading and writing,
and then configures it for 9600 baud, 8 data bits, 1 stop bit, no
parity, and no flow control.
(set sport (open-update "/dev/ttyS0"))
(initialize-serial-port sport 9600 8 1 Null False)
Other terminal control routines
(send-break port milliseconds)
(drain port)
(get-tty-mode port)
(set-tty-mode port iflags oflags cflags lflags ispeed ospeed)
send-break sends a break condition to the terminal connected
to port for the specified number of milliseconds.
drain waits for all pending output to the given terminal to
be transmitted and then returns True if successful.
get-tty-mode and set-tty-mode are very similar to
the C routines tcgetattr and tcsetattr. However,
the initialize-serial-port routine described above should be
satisfactory for almost all RS-232 applications. If you need to use
these functions for more control, please read the termios man
page before doing so.
get-tty-mode returns the terminal attributes associated with
the given file handle as a list of 6 integers [iflags oflags
cflags lflags ispeed ospeed]. set-tty-mode sets the
values of these attributes.
iflags, oflags, cflags, and lflags
are all bit-fields whose values are obtained by bit-or-ing
together the constants listed below. ispeed and
ospeed should be integer baud rates that are supported by
your machine. For explanations on the meaning of each constant,
see the termios man page.
Constants for use in iflags (input attributes):
tty-ignbrk
tty-brkint
tty-ignpar
tty-parmrk
tty-inpck
tty-istrip
tty-inlcr
tty-igncr
tty-icrnl
tty-iuclc
tty-ixon
tty-ixany
tty-ixoff
Constants for use in oflags (output attributes):
tty-opost
tty-olcuc
tty-onlcr
tty-ocrnl
tty-onocr
tty-onlret
tty-ofill
tty-ofdel
tty-nldly
tty-nl0
tty-nl1
tty-crdly
tty-cr0
tty-cr1
tty-cr2
tty-cr3
tty-tabdly
tty-tab0
tty-tab1
tty-tab2
tty-tab3
tty-bsdly
tty-bs0
tty-bs1
tty-vtdly
tty-vt0
tty-vt1
tty-ffdly
tty-ff0
tty-ff1
Constants for use in cflags (control attributes):
tty-crtscts
tty-csize
tty-cs5
tty-cs6
tty-cs7
tty-cs8
tty-cstopb
tty-cread
tty-parenb
tty-parodd
tty-hupcl
tty-clocal
Constants for use in lflags (local attributes):
tty-isig
tty-icanon
tty-xcase
tty-echo
tty-echoe
tty-echok
tty-echonl
tty-noflsh
tty-echoctl
tty-echoprt
tty-echoke
tty-flusho
tty-pendin
tty-iexten
tty-tostop