import json import uhd import numpy as np from dto.response_dto import ResponseDTO from model.surveillance_radar import SurveillanceRadar from model.jammer_radar import JammerRadar # 初始化侦查雷达 # surveillance_radar = SurveillanceRadar(usrp,rx=CHANNEL_1,tx=CHANNEL_1) # Jammer_radar = JammerRadar(usrp,rx=CHANNEL_2,tx=CHANNEL_2) # 定义一组通道常量 CHANNEL_1 = 0 CHANNEL_2 = 1 CHANNEL_3 = 2 CHANNEL_4 = 3 # 定义干扰策略集合,确保集合中的元素为合法的字符串常量 JAMMING_POLICY = { "噪声调频", "噪声调幅", "噪声直放", "速度多假目标", "距离多假目标" } ANTI_JAMMING_POLICY = { "频率捷变", "波形捷变", "自适应极化滤波" } # 定义一个USRP对象 usrp = None # 初始化USRP设备对象 def initialize_usrp(): # try: # usrp = uhd.usrp.MultiUSRP() # usrp.close() # print('------SDR Devices initialize success!------') return ResponseDTO.SUCCESS({"status": 1}).to_json() # except Exception as e: # print('SDR设备异常', e) # return ResponseDTO.ERROR_MS_DATA('SDR设备异常',{"status": 0, # "Error": str(e)}).to_json() # 获取SDR状态 def getSDRStatus(): # try: # samples = usrp.recv_num_samps(10000, 100e6, 1e6, [0], 50) # 单位: 需要接收的采样点总数(无单位), Hz, Hz, channel IDs 的列表, dB return ResponseDTO.SUCCESS({"status": 1}).to_json() # except Exception as e: # print('SDR设备异常', e) # return ResponseDTO.ERROR_MS_DATA('SDR设备异常', {"status": 0, # "Error": str(e)}).to_json() # 关闭USRP设备对象 def close_usrp(): try: usrp.close() print('------SDR Devices close success!------') except RuntimeError as e: print('SDR设备异常', e) def data(payload): jamming_policy = payload['jamming_policy'] anti_jamming_policy = payload['anti_jamming_policy'] # 判断策略是否合法 if jamming_policy not in JAMMING_POLICY or anti_jamming_policy not in ANTI_JAMMING_POLICY: return ResponseDTO.ERROR_MS_DATA('策略不合法', {"status": 0, "Error": "策略不合法"}).to_json() #打印对应策略 print(' jamming_policy:', jamming_policy) print(' anti_jamming_policy:', anti_jamming_policy) #生成两个长度为一百的浮点数组,代表侦察信号和返回的信号,数组元素随机 surveillance_signal = np.random.randn(100); surveillance_signal_back = np.random.randn(100); #返回结果 return ResponseDTO.SUCCESS({"jamming_signal": surveillance_signal.tolist(), "anti_jamming_signal": surveillance_signal_back.tolist()}).to_json() def send(): # # 设置中心频率、采样率和增益 # center_freq = 100e6 # 2.4 GHz # sample_rate = 1e6 # 1 MS/s # duration = 10 # 以秒为单位 # gain = 20 # [dB] 建议一开始设置小一点,按照实际情况调整 # # 生成发送信号 # num_samples = 1 # tx_signal = np.random.randn(num_samples) + 0.1j * np.random.randn(num_samples) # 修复部分 # # # 发送信号 # usrp.send_waveform(tx_signal, duration, center_freq, sample_rate, [0], gain) # # # 接收信号 # rx_signal = usrp.recv_num_samps(num_samples, center_freq,sample_rate) # print('信号已发送:') # print(rx_signal) # print('信号已接收') # return { # "rx_signal": rx_signal.tolist() # } return { "rx_signal": [1,2,3,4,5,6,7,8,9,10] } def demo(): # 设置中心频率、采样率和增益 center_freq = 100e6 # 2.4 GHz sample_rate = 1e6 # 1 MS/s duration = 10 # 以秒为单位 gain = 20 # [dB] 建议一开始设置小一点,按照实际情况调整 # 生成发送信号 num_samples = 100 tx_signal = np.random.randn(num_samples) + 0.1j * np.random.randn(num_samples) # 修复部分 # 发送信号 usrp.send_waveform(tx_signal, duration, center_freq, sample_rate, [0], gain) # 接收信号 rx_signal = usrp.recv_num_samps(num_samples, center_freq,sample_rate) print('信号已发送:') # 将复数数组转换为字符串数组 rx_signal_str = [str(s) for s in rx_signal] print(rx_signal_str) print('信号已接收') return { "rx_signal": rx_signal_str } # 获取SDR状态,如果状态正常,则返回True,否则返回False #main方法 if __name__ == '__main__': demo()