Feat: add ESP32 bridge functionality and physical switch control
This commit is contained in:
37
pc_reader.py
37
pc_reader.py
@ -55,17 +55,41 @@ def keyboard_control(ser):
|
||||
|
||||
|
||||
def main():
|
||||
import time
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("port", help="ESP32 serial port, for example COM5")
|
||||
parser.add_argument("--baud", type=int, default=230400)
|
||||
parser.add_argument("port", help="ESP32 serial port, for example /dev/ttyUSB0")
|
||||
parser.add_argument("--baud", type=int, default=115200)
|
||||
args = parser.parse_args()
|
||||
|
||||
buffer = bytearray()
|
||||
packet_count = 0
|
||||
last_time_ms = None
|
||||
|
||||
with serial.Serial(args.port, args.baud, timeout=1) as ser:
|
||||
ser = serial.Serial()
|
||||
ser.port = args.port
|
||||
ser.baudrate = args.baud
|
||||
ser.timeout = 0.05
|
||||
ser.write_timeout = 0.05
|
||||
|
||||
# Avoid unwanted ESP32 auto-reset / boot-mode toggling.
|
||||
ser.dtr = False
|
||||
ser.rts = False
|
||||
|
||||
ser.open()
|
||||
|
||||
try:
|
||||
# Some USB-UART adapters change line states during open().
|
||||
ser.dtr = False
|
||||
ser.rts = False
|
||||
|
||||
ser.reset_input_buffer()
|
||||
ser.reset_output_buffer()
|
||||
|
||||
print("Reading {} at {} baud".format(args.port, args.baud))
|
||||
print("Waiting for ESP32 main.py startup...")
|
||||
time.sleep(4.0)
|
||||
|
||||
threading.Thread(
|
||||
target=keyboard_control,
|
||||
args=(ser,),
|
||||
@ -82,12 +106,15 @@ def main():
|
||||
if sync_index < 0:
|
||||
del buffer[:-1]
|
||||
break
|
||||
|
||||
if sync_index:
|
||||
del buffer[:sync_index]
|
||||
|
||||
if len(buffer) < PACKET_SIZE:
|
||||
break
|
||||
|
||||
packet = bytes(buffer[:PACKET_SIZE])
|
||||
|
||||
if (sum(packet[:-1]) & 0xFF) != packet[-1]:
|
||||
del buffer[0]
|
||||
continue
|
||||
@ -101,6 +128,7 @@ def main():
|
||||
else:
|
||||
delta = (data["t_ms"] - last_time_ms) & 0xFFFFFFFF
|
||||
frequency = 1000.0 / delta if delta else 0.0
|
||||
|
||||
last_time_ms = data["t_ms"]
|
||||
|
||||
print(
|
||||
@ -116,6 +144,9 @@ def main():
|
||||
)
|
||||
)
|
||||
|
||||
finally:
|
||||
ser.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user