diff --git a/amodem/common.py b/amodem/common.py index 62791e2..d260016 100644 --- a/amodem/common.py +++ b/amodem/common.py @@ -41,7 +41,7 @@ def load(fileobj): def loads(data): - x = np.fromstring(str(data), dtype='int16') + x = np.frombuffer(data, dtype='int16') x = x / scaling return x diff --git a/amodem/recv.py b/amodem/recv.py index d6596df..2a7d116 100755 --- a/amodem/recv.py +++ b/amodem/recv.py @@ -287,8 +287,10 @@ if __name__ == '__main__': p = argparse.ArgumentParser() p.add_argument('--skip', type=int, default=100, help='skip initial N samples, due to spurious spikes') - p.add_argument('-i', '--input', type=argparse.FileType('r'), default=sys.stdin) - p.add_argument('-o', '--output', type=argparse.FileType('w'), default=sys.stdout) + p.add_argument('-i', '--input', type=argparse.FileType('rb'), + default=sys.stdin) + p.add_argument('-o', '--output', type=argparse.FileType('wb'), + default=sys.stdout) args = p.parse_args() try: main(args) diff --git a/amodem/send.py b/amodem/send.py index 8f60210..fe9e7bf 100755 --- a/amodem/send.py +++ b/amodem/send.py @@ -34,7 +34,7 @@ class Writer(object): def write(self, fd, sym, n=1): data = common.dumps(sym, n) - fd.write(str(data)) + fd.write(data) self.offset += len(data) if time.time() > self.last + 1: log.debug('%10.3f seconds of data audio', @@ -99,9 +99,9 @@ if __name__ == '__main__': p = argparse.ArgumentParser() p.add_argument('--silence-start', type=float, default=1.0) p.add_argument('--silence-stop', type=float, default=1.0) - p.add_argument('-i', '--input', type=argparse.FileType('r'), + p.add_argument('-i', '--input', type=argparse.FileType('rb'), default=sys.stdin) - p.add_argument('-o', '--output', type=argparse.FileType('w'), + p.add_argument('-o', '--output', type=argparse.FileType('wb'), default=sys.stdout) args = p.parse_args() main(args) diff --git a/tests/test_full.py b/tests/test_full.py index 6fcd276..aa6c14d 100644 --- a/tests/test_full.py +++ b/tests/test_full.py @@ -18,18 +18,20 @@ class Args(object): def __init__(self, **kwargs): self.__dict__.update(kwargs) + def run(size, chan): tx_data = os.urandom(size) - tx_audio = StringIO() - send.main(Args(silence_start=1, silence_stop=1, input=StringIO(tx_data), output=tx_audio)) + tx_audio = BytesIO() + send.main(Args(silence_start=1, silence_stop=1, + input=BytesIO(tx_data), output=tx_audio)) data = tx_audio.getvalue() data = common.loads(data) data = chan(data) data = common.dumps(data * 1j) - rx_audio = StringIO(data) + rx_audio = BytesIO(data) - rx_data = StringIO() + rx_data = BytesIO() recv.main(Args(skip=100, input=rx_audio, output=rx_data)) rx_data = rx_data.getvalue() diff --git a/tests/test_stream.py b/tests/test_stream.py index e5b80bd..d4e3a07 100644 --- a/tests/test_stream.py +++ b/tests/test_stream.py @@ -1,14 +1,14 @@ from amodem import stream import subprocess as sp -script = r""" +script = br""" import sys import time import os while True: time.sleep(0.1) - sys.stdout.write(b'\x00' * 6400) + sys.stdout.write('\x00' * 6400) sys.stderr.write('.') """