autoconsole.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import itertools as itt
  2. import sys
  3. import time
  4. import datetime
  5. import serial
  6. import win32event
  7. import win32file
  8. import win32api
  9. import pywintypes
  10. import subprocess
  11. import numpy as np
  12. res = 0
  13. # autoconsole.py <sync_file> <sync_serial_port> <adc_file> <adc_trig_direction = {0; 1}> <rf_file> <rf_freq> <rf_rate> <rf_ampl = {0; 1}> <rf_gain>
  14. try:
  15. res = subprocess.run(["Sync.exe", sys.argv[1], "--debug", "-p", sys.argv[2]], stdout=subprocess.DEVNULL, creationflags=subprocess.CREATE_NO_WINDOW)
  16. except subprocess.CalledProcessError as e:
  17. if res != 0:
  18. print(f"Error at Sync.exe! Return: {e.returncode}")
  19. sys.exit(1)
  20. try:
  21. ser = serial.Serial("COM" + str(sys.argv[2]), 9600)
  22. ser.write(bytes('e', 'utf-8'))
  23. except serial.SerialException as e:
  24. print(f"Error at serial port: {e}")
  25. sys.exit(1)
  26. sem = win32event.CreateSemaphore(None, 0, 1, "wait-semaphore-5d95950d-a278-4733-a041-ee9fb05ad4e4")
  27. if sem == None:
  28. print(f"Error at semaphore: cannot create!")
  29. win32event.CloseHandle(sem)
  30. sys.exit(1)
  31. if sys.argv[4]:
  32. pargs = ["pico_test_00_second_copy.exe", sys.argv[3], "--below"] # Не ставьте --debug, будут очень мусорные логи на сотни мегабайт!
  33. else:
  34. pargs = ["pico_test_00_second_copy.exe", sys.argv[3]]
  35. # Using Popen for asynchronous running
  36. try:
  37. picoproc = subprocess.Popen(pargs, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, creationflags=subprocess.CREATE_NO_WINDOW)
  38. print(f"Pico process PID: {picoproc.pid}")
  39. except subprocess.SubprocessError as e:
  40. print(f"Error at Pico! Return: {e.returncode}")
  41. picoproc.kill()
  42. sys.exit(1)
  43. ret = win32event.WaitForSingleObject(sem, 20000)
  44. if ret == win32event.WAIT_TIMEOUT:
  45. print("Pico timeout!")
  46. win32event.ReleaseSemaphore(sem, 1)
  47. win32file.CloseHandle(sem)
  48. sys.exit(1)
  49. try:
  50. res = subprocess.run(["hackrftrans00.exe", "-t", sys.argv[5], "-f", sys.argv[6], "-s", sys.argv[7], "-a", sys.argv[8], "-x", sys.argv[9]])
  51. except subprocess.CalledProcessError as e:
  52. if res != 0:
  53. print(f"Error at HackRF! Return: {e.returncode}")
  54. sys.exit(1)