20 ap = argparse.ArgumentParser()
21 ap.add_argument(
"--ip", default=
"192.168.2.22", help=
"Board IP")
22 ap.add_argument(
"--port", type=int, default=5005, help=
"Board config port")
25 choices=[
"simple",
"full"],
27 help=
"simple=sense_testing_gui (no num_sensors). full=DAQv2 num_sensors+sensor_ids",
29 ap.add_argument(
"-n", type=int, default=5, help=
"Send N times")
30 args = ap.parse_args()
34 if args.format ==
"simple":
37 make_header(SENSOR_CONFIG) + struct.pack(
"<BB", 0, 0) + struct.pack(
"<B", 1)
39 print(
"Format: simple (legacy) - may fail; use --format full")
42 sensor_ids = [1, 2, 3, 4]
44 necessary_for_abort = 0
46 pkt =
make_header(SENSOR_CONFIG) + struct.pack(
"<B", len(sensor_ids))
47 for sid
in sensor_ids:
48 pkt += struct.pack(
"<B", sid)
49 pkt += struct.pack(
"<BB", ref_voltage, necessary_for_abort)
51 pkt += struct.pack(
"<B", enable_serial)
53 "Format: full (DAQv2) num_sensors=4, ids=[1,2,3,4], ref=0, necessary=0, enable_serial=1"
56 print(f
"Sending {len(pkt)} bytes to {args.ip}:{args.port}")
57 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
59 for i
in range(args.n):
60 sock.sendto(pkt, (args.ip, args.port))
61 print(f
" Sent #{i+1}")
66 "Done. Check board Serial: expect 'SENSOR_CONFIG received' and 'State -> Active'"