Java 停止接收插座蓝牙数据

Java 停止接收插座蓝牙数据,java,android,bluetooth,Java,Android,Bluetooth,我想直接在智能手机上从RPI3上的sdr USB插头获取数据。使用函数samples=sdr.read_samples(256*1024),我可以轻松地在循环中获取样本(while(1))。现在我的工作是用android应用程序通过蓝牙改变中心频率。问题实际上是:我无法从我的密钥接收新数据,我可以用结构更改值:try… 但是无法使用我的函数samples=sdr.read\u samples(256*1024)获取新值,因为如果她没有数据,函数data=client\u sock.recv(10

我想直接在智能手机上从RPI3上的sdr USB插头获取数据。使用函数
samples=sdr.read_samples(256*1024)
,我可以轻松地在循环中获取样本(while(1))。现在我的工作是用android应用程序通过蓝牙改变中心频率。问题实际上是:我无法从我的密钥接收新数据,我可以用结构更改值:
try…

但是无法使用我的函数
samples=sdr.read\u samples(256*1024)
获取新值,因为如果她没有数据,函数
data=client\u sock.recv(1024)
会阻止我的循环。但这不是我想要的。我想从我的
sdr中获取数据。读取样本
,如果她从我的手机中检测到新数据,那么她正在运行

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
我怎样才能解决这个问题


谢谢你的帮助。

我用:
除蓝牙外:
我用:
除蓝牙外: