mirror of
https://github.com/romanz/amodem.git
synced 2026-02-24 16:18:12 +08:00
Use wave.play and wave.record in modem script
This commit is contained in:
@@ -6,31 +6,69 @@ if sys.version_info.major == 2:
|
||||
else:
|
||||
_stdin = sys.stdin.buffer
|
||||
_stdout = sys.stdout.buffer
|
||||
|
||||
import logging
|
||||
format = '%(asctime)s %(levelname)-10s %(message)-100s %(filename)s:%(lineno)d'
|
||||
logging.basicConfig(level=logging.DEBUG, format=format)
|
||||
|
||||
import amodem.recv
|
||||
import amodem.send
|
||||
import amodem.wave
|
||||
|
||||
import argparse
|
||||
p = argparse.ArgumentParser()
|
||||
p.add_argument('-i', '--input', type=argparse.FileType('rb'), default=_stdin)
|
||||
p.add_argument('-o', '--output', type=argparse.FileType('wb'), default=_stdout)
|
||||
|
||||
sub = p.add_subparsers()
|
||||
def FileType(mode, process=None):
|
||||
def opener(fname):
|
||||
assert 'r' in mode or 'w' in mode
|
||||
if process is None and fname is None:
|
||||
fname = '-'
|
||||
|
||||
send = sub.add_parser('send')
|
||||
send.add_argument('--silence-start', type=float, default=1.0)
|
||||
send.add_argument('--silence-stop', type=float, default=1.0)
|
||||
send.set_defaults(func=amodem.send.main)
|
||||
if fname is None:
|
||||
if 'r' in mode: return process(stdout=amodem.wave.sp.PIPE).stdout
|
||||
if 'w' in mode: return process(stdin=amodem.wave.sp.PIPE).stdin
|
||||
|
||||
recv = sub.add_parser('recv')
|
||||
recv.add_argument('--skip', type=int, default=128,
|
||||
help='skip initial N samples, due to spurious spikes')
|
||||
recv.add_argument('--plot', dest='plt', action='store_true', default=False,
|
||||
help='plot results using pylab module')
|
||||
recv.set_defaults(func=amodem.recv.main)
|
||||
if fname == '-':
|
||||
if 'r' in mode: return _stdin
|
||||
if 'w' in mode: return _stdout
|
||||
|
||||
args = p.parse_args()
|
||||
args.func(args)
|
||||
return open(fname, mode)
|
||||
|
||||
return opener
|
||||
|
||||
|
||||
def main():
|
||||
p = argparse.ArgumentParser()
|
||||
p.add_argument('-i', '--input')
|
||||
p.add_argument('-o', '--output')
|
||||
|
||||
sub = p.add_subparsers()
|
||||
|
||||
send = sub.add_parser('send')
|
||||
send.add_argument('--silence-start', type=float, default=1.0,
|
||||
help='seconds of silence before transmission starts')
|
||||
send.add_argument('--silence-stop', type=float, default=1.0,
|
||||
help='seconds of silence after transmission stops')
|
||||
|
||||
send.set_defaults(main=amodem.send.main,
|
||||
input_type=FileType('rb'),
|
||||
output_type=FileType('wb', amodem.wave.play)
|
||||
)
|
||||
|
||||
recv = sub.add_parser('recv')
|
||||
recv.add_argument('--skip', type=int, default=128,
|
||||
help='skip initial N samples, due to spurious spikes')
|
||||
recv.add_argument('--plot', dest='plt', action='store_true', default=False,
|
||||
help='plot results using pylab module')
|
||||
recv.set_defaults(main=amodem.recv.main,
|
||||
input_type=FileType('rb', amodem.wave.record),
|
||||
output_type=FileType('wb')
|
||||
)
|
||||
|
||||
args = p.parse_args()
|
||||
args.input = args.input_type(args.input)
|
||||
args.output = args.output_type(args.output)
|
||||
args.main(args)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user