自分のスマートフォンに自分のRPI3のsdr USBプラグからデータを取得したいと思います。関数samples=sdr.read_samples(256*1024)
を使うと、私のループで簡単にサンプルを取得できます(while(1))。今私の仕事はアンドロイドアプリケーションでブルートゥースによって中心周波数を変更することです。問題は、実際にある:私は私のキーから新しいデータを受信することはできません、私は構造と値を変更するには問題がない:try...
recvソケットBluetoothのデータを停止
しかし、機能data=client_sock.recv(1024)
があれば、私のループを遮断するので、私の機能samples=sdr.read_samples(256*1024)
で新しい値を取得することは不可能彼女はデータを持っていません。しかし、これは私が望むものではありません。 sdr.read_samples
からデータを取得したいのですが、彼女が電話から新しいデータを検出すると、彼女は実行しています。
from pylab import*
from rtlsdr import*
from bluetooth import*
import sys
#configure device
sdr= RtlSdr()
sdr.sample_rate=double(sys.argv[3])
sdr.gain=double(sys.argv[2])
sdr.center_freq=double(sys.argv[1])
NFFT=33
#Bluetooth connection
server_sock=BluetoothSocket(RFCOMM)
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)
port=server_sock.getsockname()[1]
uuid="94f39d29-7d6d-437d-973b-fba39e49d4ee"
client_sock,client_info=server_sock.accept()
while(1):
samples=sdr.read_samples(256*1024)
result=psd(samples,NFFT, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq*1e6/1e6)
tab_freq=(result[1]/1e6)
value_freq=str(tab_freq)[1:-1]
value_list=[format(float(v), ".10f") for v in value_freq.split()]
value_freq2= "\n".join(value_list)
tab_pxx=result[0]
value_pxx=str(tab_pxx)[1:-1]
client_sock.send(value_freq2+'\n'+'\n'.join(value_pxx.split()))
try:
data=client_sock.recv(1024)
if len(data)==0: break
data2=float(data)
a=data2
except IOError:
pass
どうすればこの問題を解決できますか?
ありがとうございました。