Last active
July 19, 2022 15:03
-
-
Save d33tah/08549a1f42a2f19d20306d0dd137fc51 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import datetime | |
import sys | |
import time | |
import argparse | |
import serial | |
def parse_args(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument("--goal", default="SP7JW") | |
parser.add_argument("--repeats", type=int, default=3) | |
args = parser.parse_args() | |
return args | |
def skip_hello_banner(ser): | |
ser.read(1).decode() | |
byte = "" | |
while byte != "\n": | |
byte = ser.read(1).decode() | |
def main(args): | |
time_started = datetime.datetime.now() | |
goal_single = args.goal | |
goal_successes = args.repeats | |
goal = " ".join([goal_single for x in range(goal_successes)]) | |
received = "" | |
failures = 0 | |
successes = 0 | |
with serial.Serial("/dev/ttyUSB0", 115200) as ser: | |
skip_hello_banner(ser) | |
while True: | |
byte = ser.read(1).decode() | |
received += byte | |
if received == goal: | |
received = "" | |
break | |
elif received and not goal.strip().startswith(received): | |
received = "" | |
successes = 0 | |
failures += 1 | |
print("") | |
sys.stdout.write(byte) | |
sys.stdout.flush() | |
now = datetime.datetime.now() | |
elapsed = now - time_started | |
status = f"[{now}]: succeeded after {failures} tries. Elapsed {elapsed}." | |
print(status) | |
with open("morse.log", "a") as f: | |
f.write(status + "\n") | |
if __name__ == "__main__": | |
main(parse_args()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment