1import SoapySDR 2from SoapySDR import * #SOAPY_SDR_* constants 3import numpy as np 4import time 5 6if __name__ == "__main__": 7 hackrf = SoapySDR.Device(dict(driver="hackrf")) 8 print hackrf 9 10 hackrf.setSampleRate(SOAPY_SDR_RX, 0, 8e6) 11 hackrf.setSampleRate(SOAPY_SDR_TX, 0, 8e6) 12 13 """ 14 for i in range(5): 15 print(" Make rx stream #%d"%i) 16 rxStream = hackrf.setupStream(SOAPY_SDR_RX, SOAPY_SDR_CF32, [0]) 17 for j in range(5): 18 numSampsTotal = 10000 19 print(" Activate, get %d samples, Deactivate #%d"%(numSampsTotal, j)) 20 hackrf.activateStream(rxStream) 21 buff = np.array([0]*1024, np.complex64) 22 while numSampsTotal > 0: 23 sr = hackrf.readStream(rxStream, [buff], buff.size, timeoutUs=int(1e6)) 24 #print sr 25 assert(sr.ret > 0) 26 numSampsTotal -= sr.ret 27 hackrf.deactivateStream(rxStream) 28 hackrf.closeStream(rxStream) 29 30 for i in range(5): 31 print(" Make tx stream #%d"%i) 32 txStream = hackrf.setupStream(SOAPY_SDR_TX, SOAPY_SDR_CF32, [0]) 33 for j in range(5): 34 numSampsTotal = 10000 35 print(" Activate, send %d samples, Deactivate #%d"%(numSampsTotal, j)) 36 hackrf.activateStream(txStream) 37 buff = np.array([0]*1024, np.complex64) 38 while numSampsTotal != 0: 39 size = min(buff.size, numSampsTotal) 40 sr = hackrf.writeStream(txStream, [buff], size) 41 #print sr 42 if not (sr.ret > 0): print("Fail %s, %d"%(sr, numSampsTotal)) 43 assert(sr.ret > 0) 44 numSampsTotal -= sr.ret 45 hackrf.deactivateStream(txStream) 46 hackrf.closeStream(txStream) 47 """ 48 49 #################################################################### 50 #setup both streams at once 51 #################################################################### 52 rxStream = hackrf.setupStream(SOAPY_SDR_RX, SOAPY_SDR_CF32, [0]) 53 txStream = hackrf.setupStream(SOAPY_SDR_TX, SOAPY_SDR_CF32, [0]) 54 55 hackrf.activateStream(rxStream) 56 hackrf.activateStream(txStream) 57 58 numSampsTotal = 10000 59 hackrf.activateStream(rxStream) 60 buff = np.array([0]*1024, np.complex64) 61 while numSampsTotal > 0: 62 sr = hackrf.readStream(rxStream, [buff], buff.size, timeoutUs=int(1e6)) 63 #print sr 64 assert(sr.ret > 0) 65 numSampsTotal -= sr.ret 66 67 numSampsTotal = 10000 68 buff = np.array([0]*1024, np.complex64) 69 while numSampsTotal != 0: 70 size = min(buff.size, numSampsTotal) 71 sr = hackrf.writeStream(txStream, [buff], size) 72 #print sr 73 if not (sr.ret > 0): print("Fail %s, %d"%(sr, numSampsTotal)) 74 assert(sr.ret > 0) 75 numSampsTotal -= sr.ret 76 77 hackrf.deactivateStream(rxStream) 78 hackrf.deactivateStream(txStream) 79 80 hackrf.closeStream(rxStream) 81 hackrf.closeStream(txStream) 82