Attempts to open the named serial port and return a serial-port object.
open-serial-port name &rest args &key baud-rate data-bits stop-bits parity cts-flow-p dsr-flow-p dtr rts read-interval-timeout read-total-base-timeout read-total-byte-timeout write-total-base-timeout write-total-byte-timeout => serial-port
A string naming a serial port.
See in the Description below for details of the remaining arguments.
The function open-serial-port attempts to open the serial port name and return a serial-port object.
name
is passed directly to
Createfile()
. For ports COM
n
where
n
> 9, you must take care to pass the real port name expected by Windows. At the time of writing this issue is documented at
http://support.microsoft.com/kb/115831
.
If any of
baud-rate
,
data-bits
,
stop-bits
and
parity
are supplied then the corresponding serial port settings are changed. The values of
baud-rate
and
data-bits
should each be an appropriate integer. The value of
stop-bits
should be 1, 1.5 or 2. The value of
parity
should be one of the keywords
:even
,
:mark
,
:none
,
:odd
or
:space
.
The arguments
cts-flow-p
and
dsr-flow-p
control whether write operations respond to CTS and DSR flow control. A non-nil
value means that the corresponding flow control is used.
The arguments
dtr
and
rts
control whether read operations generate DTR or RTS flow control. If the value is
:handshake
then the corresponding flow control signal is generated automatically. If the value is
nil
or
t
then the initial state of the flow control signal is set and automatic flow control is not used. See set-serial-port-state for manual flow control.
The argument
read-interval-timeout
can be used to control the maximum time to wait between each input character. The value
:none
means that reading will not wait for characters at all, only returning whatever is already in the input buffer
The arguments read-total-base-timeout and read-total-byte-timeout can be used to control the maximum time to wait for a sequence of characters. The arguments write-total-base-timeout and write-total-byte-timeout can be used to control the maximum time to wait when transmitting a sequence of characters. For both reading and writing the timeout is given by the expression:
base_timeout + nchars * byte_timeout
The default value of each of
read-total-base-timeout
,
read-total-byte-timeout
,
write-total-base-timeout
and
write-total-byte-timeout
is
nil
and this means that the corresponding parameter in the OS is left unchanged and there is zero timeout. Otherwise the value should be a non-negative real number specifying a timeout in seconds.