Hi,
I am working on a cognitive radio system. the transmitter side senses the
spectrum and then transmits on a carrier frequency which it finds free.
The receiver should be kept synchronized with the transmitter. The
transmitter is for now tx_voice.py and receiver is rx_voice.py.
*Assumptions:*
The trasmitter is only using 3 freqs: 460e6 461e6 462e6 Hz
The receiver also knows this set of frequencies
*Till now:*
I have implemented the power detector module in the transmitter.
*Problem:*
I am failing to implement the required changes in rx_voice.py
I don't know where to implement the following logic in rx_voice.py:
*If no packet is received on freq1
check freq2
else
stay* (also keep checking if data is being received,If packets are
not being received then move to another frequency)
and so on
*2nd Approach:*
I tried a new approach with same logic by using the concept of subprocesses
;
i wrote the following code:
#####################################################################################
import time
import subprocess
while(True):
output=open("tempdata", "w")
process=subprocess.Popen(*["./rx_voice.py", "-f", "460e6", "-r",
"500000"*]*]*, stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;
else:
process.kill()
output.close()
output=open("tempdata", "w")
process=subprocess.Popen(*["./rx_voice.py", "-f", "461e6", "-r",
"500000"*], stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;
else:
process.kill()
output=open("tempdata", "w")
process=subprocess.Popen(*["./rx_voice.py", "-f", "462e6", "-r",
"500000"*], stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen(["du", "-b", "tempdata"],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" ")[0];
check_size_2=check_size_2.split(" ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;
else:
process.kill()
#############################################################################################END
*But the problem arises because the opening of a process (rx_voice.py) takes
some time (maybe because of some messages which are displayed everytime when
rx_voice.py is started) *
*
NOTE: kill() only runs in python 2.6 and maybe higher versions*
Can someone please help me in my initial approach (editing rx_voice.py or
receive_path.py) OR my subprocess approach??
time is not on my side :)
Regards
Ali
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio