Skip to content

Instantly share code, notes, and snippets.

@d33tah
Last active July 19, 2022 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d33tah/08549a1f42a2f19d20306d0dd137fc51 to your computer and use it in GitHub Desktop.
Save d33tah/08549a1f42a2f19d20306d0dd137fc51 to your computer and use it in GitHub Desktop.
#!/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