11 from numpy.fft import *;
14 myport = random.randint(1025,65535);
15 filename = "output.dat";
24 TCPSock = socket(AF_INET,SOCK_STREAM);
26 TCPSock.connect((host,port));
28 #f_mhz = 2647; # roof ofdm
29 if(len(sys.argv)!= 3):
30 print "usage: %s fc_ghz decim_pow2_exponent"%(sys.argv[0]);
33 f_mhz = float(sys.argv[1])*1000;
34 decim = int(sys.argv[2]);
40 window = 3; #0=rect, 1=hanning, 2=hamming, 3=blackman
44 samples = samples*4; #bytes of data we are requesting
46 #decim = 2; #0-8 (3 => 2^3 = 8)
47 decim = decim+16; # +16 to use 16bit floats instead of 32 bit floats
48 mode = 0; #0=IQ, 1=MAG, 2=MAGDB
51 raw_data = struct.pack("<IIIIIIII", 0x01, 0x18, f_mhz, f_hz, gain, samples, decim, sets);
75 data = TCPSock.recv(4);
76 [opcode] = struct.unpack("<I", data);
77 print "Opcode = %d"%(opcode);
82 data = TCPSock.recv(7*4);
83 args = struct.unpack("<IIIIIII", data);
84 print ["reply_len", "freq_mhz", "offset_hz", "gain", "sample_bytes", "decim", "sets_remain"];
86 IQ_bytes = args[0] - 7*4;
90 data = TCPSock.recv(4);
91 [i,q] = struct.unpack("<hh", data);
96 mags.append(abs(tmp));
99 sample_count = sample_count + 1;
100 # print "sample count %d"%(sample_count)
102 IQ_bytes = IQ_bytes - 4;
104 print "got all data (total %d)"%(sample_count);
105 print "remaining: %d"%(IQ_bytes);
121 #plot(10*log10(nmags));
124 fftlen = (dlen-1024)/1024;
127 for i in range(1, dlen-1025, 1024):
130 for ind in range(i, i+1024):
131 t_in.append(vals[ind]);
133 #tmp = 20*log10(fftshift(fft(t_in)));
134 tmp = (fftshift(fft(t_in)));
136 if(len(fft_data) == 0):
137 for ind in range(0,1024):
138 fft_data.append( tmp[ind] );
140 for ind in range(0,1024):
141 fft_data[ind] = fft_data[ind] + tmp[ind];
143 #fft_data = 20*log10(fftshift(fft(vals)));
150 f = open(filename, "w");
152 binchunk = struct.pack("<ff",float(sample.real), float(sample.imag) );