2017-07-20 11 views
1

自分のスマートフォンに自分の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 

どうすればこの問題を解決できますか?

ありがとうございました。

答えて

関連する問題