home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
scripts
/
ckermit
/
logserial
< prev
next >
Wrap
Text File
|
2009-12-06
|
4KB
|
88 lines
#!./wermit
#
# logserial
#
# C-Kermit Script to copy a local shell session out the serial port in real
# time; for example to feed it to a speaking device or serial printer; in this
# case, the RC Systems DoubleTalk LT, which needs each line to be terminated
# by an ASCII NUL character.
#
# Replace "./wermit" in the first line with the full path of your C-Kermit 9.0
# program and give this script file execute permission with chmod +x.
#
# C-Kermit 9.0 or later is required, and it must be a version built with
# -DNOUUCP, as the Mac OS X versions are, by default, in this C-Kermit
# release. SET SESSION-LOG NULL-PADDED is new to C-Kermit 9.0, as is the
# ability to send a log file (session, debug, packets...) to a serial port.
#
# The device on the other end should be connected with a null modem cable or
# modem eliminator and it should be turned on before this script is executed,
# otherwise the script is likely to hang when it tries to open the serial
# port, because many versions of Unix will not open a serial port unless or
# until certain modem signals such as CD, DSR, and/or CTS are presented.
#
# Frank da Cruz, Columbia University, October 2009
#
# Last update: Tue Oct 27 10:59:35 2009
if < \v(version) 900299 exit 1 "FATAL - C-Kermit 9.0 required"
# Change port parameters as appropriate:
.portname = /dev/tty.KeySerial1 # Tested on a Keyspan USB adapter
.speed = 9600
.flow = rts/cts
# Set up the serial port
set carrier-watch off # Don't require carrier
set line \m(portname) # Try to open the serial port
if fail exit 1 "FATAL - \m(portname): \v(setlinemsg)" # Stop here on error
set speed \m(speed) # Set the required transmission speed
if fail exit 1 FATAL - "set speed \m(speed)" rejected for \m(portname)
set flow \m(flow) # Set the appropriate flow control
if fail exit 1 FATAL - "set flow \m(flow)" unsupported for \m(portname)
output \13 # Send it a Carriage Return
output \{1}4S # Set the desired speaking speed
# The two output commands are specific to the DoubleTalk device. The carriage
# return (\13) activates the speaking function, and "\{1}4S" (Ctrl-A, 4, S) is
# a command to set the speaking rate. 5 is average, use a lower digit to slow
# it down, a higher digit (up to 9) to speed it up.
#
# Since Kermit can't have two terminal connections open at the same time,
# the serial port has to be closed. We just have to hope the settings stick
# (in Mac OS X they do).
close connection # Close the port
# In the following section we open a new connection to a pseudoterminal (pty).
# "set session-log null-padded" is also specific to the DoubleTalk device.
set session-log binary # text might also work
set session-log null-padded # Put ^@ after every ^J
log session \m(portname) # Log session to serial port
if fail {
echo "---------------------------------------------------"
echo ERROR: SERIAL PORT \m(portname) CAN'T BE OPENED FOR
echo LOGGING. EITHER THE DEVICE IS NOT ACCESSIBLE OR IT
echo IS IN USE BY ANOTHER PROCESS.
echo "---------------------------------------------------"
exit 1
}
set host /pty \$(SHELL) # Start new shell in a pseudoterminal
if fail exit 1 "FATAL - Can't spawn a new shell"
echo "---------------------------------------------------"
echo STARTING NEW SHELL SESSION LOGGING TO \m(portname)...
echo GIVE AN 'exit' COMMAND TO THE SHELL TO STOP LOGGING.
echo "---------------------------------------------------"
connect
echo "---------------------------------------------------"
echo SESSION TERMINATED, LOGGING STOPPED.
echo "---------------------------------------------------"
close session
exit 0