added hex mode writing (mimics to real data from redar)
This commit is contained in:
61
datagen.py
61
datagen.py
@ -3,6 +3,7 @@ import os
|
|||||||
import time
|
import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
#from builtins import True
|
||||||
|
|
||||||
# ================================================================================
|
# ================================================================================
|
||||||
# ПАРАМЕТРЫ ЭМУЛЯЦИИ
|
# ПАРАМЕТРЫ ЭМУЛЯЦИИ
|
||||||
@ -91,7 +92,7 @@ def create_fourier_data(sync_det_data=None, fft_size=SYNC_DET_SIZE, output_size=
|
|||||||
# ГЕНЕРАЦИЯ ФАЙЛОВ
|
# ГЕНЕРАЦИЯ ФАЙЛОВ
|
||||||
# ================================================================================
|
# ================================================================================
|
||||||
|
|
||||||
def emit_raw_files(count=NUM_FILES, start_time=None):
|
def emit_raw_files(count=NUM_FILES, start_time=None, hex_mode=True):
|
||||||
"""Генерирует RAW файлы количеством count."""
|
"""Генерирует RAW файлы количеством count."""
|
||||||
if start_time is None:
|
if start_time is None:
|
||||||
start_time = datetime.now()
|
start_time = datetime.now()
|
||||||
@ -117,8 +118,17 @@ def emit_raw_files(count=NUM_FILES, start_time=None):
|
|||||||
# Добавляем заголовок
|
# Добавляем заголовок
|
||||||
filepath = os.path.join(DATA_DIR, filename)
|
filepath = os.path.join(DATA_DIR, filename)
|
||||||
with open(filepath, 'w') as f:
|
with open(filepath, 'w') as f:
|
||||||
f.write("RAW\n")
|
|
||||||
np.savetxt(f, data, fmt='%.6f')
|
|
||||||
|
if hex_mode:
|
||||||
|
#f.write("SYNC_DET_HEX\n")
|
||||||
|
#np.savetxt(f, np.uint32(data*1000), fmt='0xD0%06X')
|
||||||
|
np.savetxt(f, ((data * 1000).astype(np.int32) & 0xFFFFFF), fmt='0xD0%06X')
|
||||||
|
|
||||||
|
else:
|
||||||
|
f.write("RAW\n")
|
||||||
|
np.savetxt(f, data, fmt='%.6f')
|
||||||
|
|
||||||
|
|
||||||
# Устанавливаем время модификации
|
# Устанавливаем время модификации
|
||||||
timestamp = file_time.timestamp()
|
timestamp = file_time.timestamp()
|
||||||
@ -132,7 +142,7 @@ def emit_raw_files(count=NUM_FILES, start_time=None):
|
|||||||
return start_time + timedelta(milliseconds=count * FILE_INTERVAL_MS)
|
return start_time + timedelta(milliseconds=count * FILE_INTERVAL_MS)
|
||||||
|
|
||||||
|
|
||||||
def emit_sync_det_files(count=NUM_FILES, start_time=None):
|
def emit_sync_det_files(count=NUM_FILES, start_time=None, hex_mode=True):
|
||||||
"""Генерирует SYNC_DET файлы количеством count."""
|
"""Генерирует SYNC_DET файлы количеством count."""
|
||||||
if start_time is None:
|
if start_time is None:
|
||||||
start_time = datetime.now()
|
start_time = datetime.now()
|
||||||
@ -154,12 +164,19 @@ def emit_sync_det_files(count=NUM_FILES, start_time=None):
|
|||||||
|
|
||||||
# Генерируем данные
|
# Генерируем данные
|
||||||
data = create_sync_det_data(index=i)
|
data = create_sync_det_data(index=i)
|
||||||
|
#print("data:", data)
|
||||||
|
|
||||||
# Добавляем заголовок
|
# Добавляем заголовок
|
||||||
filepath = os.path.join(DATA_DIR, filename)
|
filepath = os.path.join(DATA_DIR, filename)
|
||||||
with open(filepath, 'w') as f:
|
with open(filepath, 'w') as f:
|
||||||
f.write("SYNC_DET\n")
|
|
||||||
np.savetxt(f, data, fmt='%.6f')
|
if hex_mode:
|
||||||
|
#f.write("SYNC_DET_HEX\n")
|
||||||
|
#np.savetxt(f, np.uint32(data*1000), fmt='0xF0%06X')
|
||||||
|
np.savetxt(f, ((data * 1000).astype(np.int32) & 0xFFFFFF), fmt='0xF0%06X')
|
||||||
|
else:
|
||||||
|
f.write("SYNC_DET\n")
|
||||||
|
np.savetxt(f, data, fmt='%.6f')
|
||||||
|
|
||||||
# Устанавливаем время модификации
|
# Устанавливаем время модификации
|
||||||
timestamp = file_time.timestamp()
|
timestamp = file_time.timestamp()
|
||||||
@ -173,7 +190,7 @@ def emit_sync_det_files(count=NUM_FILES, start_time=None):
|
|||||||
return start_time + timedelta(milliseconds=count * FILE_INTERVAL_MS)
|
return start_time + timedelta(milliseconds=count * FILE_INTERVAL_MS)
|
||||||
|
|
||||||
|
|
||||||
def emit_fourier_files(count=NUM_FILES, start_time=None):
|
def emit_fourier_files(count=NUM_FILES, start_time=None, hex_mode=True):
|
||||||
"""✓ Генерирует FOURIER файлы количеством count.
|
"""✓ Генерирует FOURIER файлы количеством count.
|
||||||
|
|
||||||
Каждый файл содержит амплитудный спектр размером 500.
|
Каждый файл содержит амплитудный спектр размером 500.
|
||||||
@ -213,8 +230,15 @@ def emit_fourier_files(count=NUM_FILES, start_time=None):
|
|||||||
# Добавляем заголовок
|
# Добавляем заголовок
|
||||||
filepath = os.path.join(DATA_DIR, filename)
|
filepath = os.path.join(DATA_DIR, filename)
|
||||||
with open(filepath, 'w') as f:
|
with open(filepath, 'w') as f:
|
||||||
f.write("FOURIER\n")
|
|
||||||
np.savetxt(f, data, fmt='%.6f')
|
if hex_mode:
|
||||||
|
#f.write("SYNC_DET_HEX\n")
|
||||||
|
#np.savetxt(f, np.uint32(data*1000), fmt='0xF4%06X')
|
||||||
|
np.savetxt(f, ((data * 1000).astype(np.int32) & 0xFFFFFF), fmt='0xF4%06X')
|
||||||
|
else:
|
||||||
|
f.write("FOURIER\n")
|
||||||
|
np.savetxt(f, data, fmt='%.6f')
|
||||||
|
|
||||||
|
|
||||||
# Устанавливаем время модификации
|
# Устанавливаем время модификации
|
||||||
timestamp = file_time.timestamp()
|
timestamp = file_time.timestamp()
|
||||||
@ -262,9 +286,20 @@ if __name__ == "__main__":
|
|||||||
print("=" * 80)
|
print("=" * 80)
|
||||||
|
|
||||||
show_menu()
|
show_menu()
|
||||||
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
|
hex_choice = input(" Генерировать в HEX (h) или float (f)? 'q' для выхода: ").strip().lower()
|
||||||
|
if hex_choice == "h":
|
||||||
|
hex_mode = True
|
||||||
|
elif hex_choice == "f":
|
||||||
|
hex_mode = False
|
||||||
|
else:
|
||||||
|
print(" ❌ Неверный выбор. Введите h, f или q")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
choice = input(" Введите номер (1/2/3) или 'q' для выхода: ").strip().lower()
|
choice = input(" Введите номер (1/2/3) или 'q' для выхода: ").strip().lower()
|
||||||
|
|
||||||
if choice == 'q':
|
if choice == 'q':
|
||||||
@ -272,18 +307,20 @@ if __name__ == "__main__":
|
|||||||
break
|
break
|
||||||
elif choice == '1':
|
elif choice == '1':
|
||||||
start_time = datetime.now().replace(microsecond=0)
|
start_time = datetime.now().replace(microsecond=0)
|
||||||
emit_raw_files(NUM_FILES, start_time)
|
emit_raw_files(NUM_FILES, start_time, hex_mode=hex_mode)
|
||||||
break
|
break
|
||||||
elif choice == '2':
|
elif choice == '2':
|
||||||
start_time = datetime.now().replace(microsecond=0)
|
start_time = datetime.now().replace(microsecond=0)
|
||||||
emit_sync_det_files(NUM_FILES, start_time)
|
emit_sync_det_files(NUM_FILES, start_time, hex_mode=hex_mode)
|
||||||
break
|
break
|
||||||
elif choice == '3':
|
elif choice == '3':
|
||||||
start_time = datetime.now().replace(microsecond=0)
|
start_time = datetime.now().replace(microsecond=0)
|
||||||
emit_fourier_files(NUM_FILES, start_time)
|
emit_fourier_files(NUM_FILES, start_time, hex_mode=hex_mode)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print(" ❌ Неверный выбор. Введите 1, 2, 3 или q")
|
print(" ❌ Неверный выбор. Введите 1, 2, 3 или q")
|
||||||
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\n\n Прервано пользователем.")
|
print("\n\n Прервано пользователем.")
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user