我有一个导入到Falsk网络服务器一个“拨号音” Python程序,而我有我试图用更新的拨号音程序内的采样率的变量值的HTML嵌入roundSlider部件。 当我运行的网络服务器,并开始拖动滑块,滑块的视觉价值不更新/改变拖动时,但没有声调,语气程序无法启动!
拜托,我需要你的帮助摸不着头脑。
这里是我的烧瓶app.py:
from flask import Flask, render_template, jsonify, request,redirect,url_for
from random import randint
from top_block_22 import top_block_22
app = Flask(__name__)
# def test():
# print("its working")
@app.route('/')
def slide_func():
return render_template("index.html")
print(slide_val)
return(slide_val)
def test():
print("its working")
@app.route('/valueofslider')
def slide():
slide_val = request.args.get('slide_val')
return main(slide_val)
def main(slide_val):
tb = top_block_22()
tb.start()
samp_rate = int(slide_val) + 100
print(samp_rate)
return(slide_val)
app.debug = True
if __name__ == '__main__':
app.run(debug=True)
主要拨号音代码:
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
from flask import Flask, render_template, jsonify, request, redirect, url_for
from random import randint
#from app import *
class top_block_22(gr.top_block):
def __init__(self, samp_rate):
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 32000
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
def main(top_block_cls=top_block_22, options=None):
tb = top_block_22('samp_rate')
tb.start()
try:
raw_input('Press Enter to quit: ')
except EOFError:
pass
tb.stop()
tb.wait()
if __name__ == '__main__':
main()
index.html的脚本:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery roundSlider - JS Bin</title>
<link rel="icon" href="data:,">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
<!-- Only html needed -->
<form class="form-inline" method="POST" action="{{ url_for('slide') }}">
<div id="slider"></div>
<script>
var val;
$("#slider").roundSlider({
radius: 215,
min: 0,
max: 100000,
change: function () {
var obj1 = $("#slider").data("roundSlider");
val = obj1.getValue();
value: 10
$.getJSON('/valueofslider', {
slide_val: val
});
}
});
</script>
</body>
</html>
下面是当其更新其值的滑块的图像:
此代码对我的作品。
主要的问题是功能跑得特别快,没人能听到声音-所以我加了time.sleep(0.5)
我把所有的代码在一个文件中,以便更容易复制并粘贴到文件来运行它。
主页http://localhost:5000/
显示器几个不同的值来测试它的链接。
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
class top_block_22(gr.top_block):
def __init__(self, samp_rate=32000): # default value for samp_rate
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate # without "= 32000"
print('[DEBUG] top_block_22:', self.samp_rate)
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
# -----------------------------------------------------------------------------
from flask import Flask, request
#from top_block_22 import top_block_22
import time
app = Flask(__name__)
@app.route('/')
def index():
HTML = 'HEAR:'
for item in (20000, 25000, 32000):
HTML += ' <a href="/valueofslider?slide_val={}">{}</a>'.format(item, item)
return HTML
@app.route('/valueofslider')
def slide():
slide_val = request.args.get('slide_val', 32000) # default value 32000
main(slide_val)
return slide_val
def main(slide_val):
samp_rate = int(slide_val) + 100
print('[DEBUG] main:', samp_rate)
tb = top_block_22(samp_rate) # run with value from variable
tb.start()
time.sleep(0.5)
tb.stop()
tb.wait()
if __name__ == '__main__':
app.run(debug=True)
编辑:该版本显示滑块和它使用的Thread
来播放声音的所有时间(上滑块选择第一个值之后)。
当滑块向新值,那么停止旧线,并创建新的一个新的samp_rate
。
但也许它可以在不进行Thread
,但只使用tb.start
, tb.stop
等,这似乎top_block_22
已经使用线程工作。
它还使用http://localhost:5000/off
发送samp_rate=0
它停止发声。
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
class top_block_22(gr.top_block):
def __init__(self, samp_rate):
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate
print('[DEBUG] top_block_22:', self.samp_rate)
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
# -----------------------------------------------------------------------------
from threading import Thread
class MyThread(Thread):
def __init__(self, samp_rate):
Thread.__init__(self)
self.running = True
self.samp_rate = samp_rate
def run(self):
tb = top_block_22(self.samp_rate)
tb.start()
while self.running:
time.sleep(0.5) # need it to head sound
tb.stop()
tb.wait()
# -----------------------------------------------------------------------------
from flask import Flask, request
#from top_block_22 import top_block_22
import time
app = Flask(__name__)
my_thread = None
@app.route('/')
def index():
return '''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery roundSlider - JS Bin</title>
<link rel="icon" href="data:,">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
<!-- Only html needed -->
<form class="form-inline" method="POST" action="{{ url_for('slide') }}">
<div id="slider"></div>
<script>
var val;
$("#slider").roundSlider({
radius: 215,
min: 0,
max: 100000,
change: function () {
var obj1 = $("#slider").data("roundSlider");
val = obj1.getValue();
value: 10
$.getJSON('/valueofslider', {
slide_val: val
});
}
});
</script>
</body>
</html>'''
@app.route('/off')
def off():
'''use `slide_val=0` to turn it off'''
main(0)
return 'off'
@app.route('/valueofslider')
def slide():
slide_val = request.args.get('slide_val', 32000)
main(slide_val)
return slide_val
def main(slide_val):
global my_thread
print('[DEBUG] main:', slide_val)
samp_rate = int(slide_val)
if my_thread: # if my_thread is not None
my_thread.running = False
my_thread.join()
my_thread = None
if samp_rate > 0:
my_thread = MyThread(samp_rate)
my_thread.start()
if __name__ == '__main__':
app.run(debug=True)
编辑:无版本Thread
。
正如之前显示滑块和它玩声音选择第一个值之后的所有时间。 它使用全球价值tb
继续访问对象,并停止它时,它获得新samp_rate
,并运行新的对象。
它还使用http://localhost:5000/off
发送samp_rate=0
它停止发声。
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
class top_block_22(gr.top_block):
def __init__(self, samp_rate):
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.samp_rate = samp_rate
print('[DEBUG] top_block_22:', self.samp_rate)
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
# -----------------------------------------------------------------------------
from flask import Flask, request
#from top_block_22 import top_block_22
app = Flask(__name__)
tb = None # global variable to keep it between requests
@app.route('/')
def index():
return '''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery roundSlider - JS Bin</title>
<link rel="icon" href="data:,">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
<!-- Only html needed -->
<form class="form-inline" method="POST" action="{{ url_for('slide') }}">
<div id="slider"></div>
<script>
var val;
$("#slider").roundSlider({
radius: 215,
min: 0,
max: 100000,
change: function () {
var obj1 = $("#slider").data("roundSlider");
val = obj1.getValue();
value: 10
$.getJSON('/valueofslider', {
slide_val: val
});
}
});
</script>
</body>
</html>'''
@app.route('/off')
def off():
'''use `slide_val=0` to turn it off'''
main(0)
return 'off'
@app.route('/valueofslider')
def slide():
slide_val = request.args.get('slide_val', 32000)
main(slide_val)
return slide_val
def main(slide_val):
global tb
print('[DEBUG] main:', slide_val)
samp_rate = int(slide_val)
# stop old sound
if tb: # if tb is not None
tb.stop()
tb.wait()
tb = None
# create new sound (if not zero)
if samp_rate > 0:
tb = top_block_22(samp_rate)
tb.start()
if __name__ == '__main__':
app.run(debug=True)
编辑:最后版本
一些变化在JavaScript:
- 它在启动时设置默认值 - 32000有错误的JS。
- 所以它开始加载后页面的声音发送的开始请求。 有没有必要在滑动条选择的价值。
在Python的变化:
- 作为建议PEP 8 -风格指南Python代码我设置
UpperCaseName
类- TopBlock22
- 更名
main
以sound
哪个更好地描述什么功能是做 -
http://localhost/set/<value>
设置采样率,因此它可以被用来代替http://localhost/valueofslider?slider_val=<value>
。 -
http://localhost/get
获取当前的采样率 -
http://localhost/off
套值设置为0,从而其关断声音。 我用它来快速关掉声音时,它是太烦人了。 -
print_function
从__future__
使用print(text)
在Python 3样 - 函数返回值为文本,但也有与线
jsonify()
这样他们就可以retun它作为JSON。 也许以后可以是有用的。
在FAQ
,我发现我怎么可以重新配置流图? 如何使用锁(),解锁()? 所以也许它可以改变采样率,而无需创建新的对象,也许它提供了更好的声音。 我把头点击,当它改变采样率。
码:
from __future__ import print_function
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
class TopBlock22(gr.top_block): # PEP8: CamelCaseName for classes
def __init__(self, sample_rate=32000):
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.sample_rate = sample_rate
print('[TopBlock22] sample_rate:', self.sample_rate)
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
# -----------------------------------------------------------------------------
from flask import Flask, request, jsonify
#from top_block_22 import TopBlock22
import time
app = Flask(__name__)
tb = None # global variable to keep it between requests
@app.route('/')
def index():
return '''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GNURadio Slider Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
<div id="slider"></div>
<script>
// keep slider's value
var val;
// create slider
$("#slider").roundSlider({
radius: 215,
min: 0,
max: 100000,
value: 32000, // default value at start
change: function () {
var obj = $("#slider").data("roundSlider");
val = obj.getValue();
$.getJSON('/valueofslider', {
slide_val: val
});
}
});
// play sound at start
$.getJSON('/valueofslider', {slide_val: val});
</script>
</body>
</html>'''
@app.route('/test')
def test():
HTML = 'HEAR:'
for item in (0, 10000, 20000, 25000, 32000):
HTML += ' <a href="/set/{}">{}</a>'.format(item, item)
return HTML
@app.route('/off')
def off():
"""Turn off sound."""
sound(0)
#return jsonify({'val': 0})
return 'off'
@app.route('/set/<int:value>')
def set_value(value):
"""Set value. Use 0 to turn it off."""
sound(value)
#return jsonify({'val': value})
return str(value)
@app.route('/get')
def get_value():
"""Get current value."""
if tb:
value = tb.sample_rate
else:
value = 0
#return jsonify({'val': value})
return str(value)
@app.route('/valueofslider')
def slide():
sample_rate = request.args.get('slide_val', '32000')
sample_rate = int(sample_rate)
sound(sample_rate)
#return jsonify({'val': sample_rate})
return str(sample_rate)
def sound(sample_rate):
global tb
print('[sound] sample_rate:', sample_rate)
sample_rate = int(sample_rate)
# stop old sound
if tb: # if tb is not None
tb.stop()
tb.wait()
tb = None
# create new sound (if not zero)
if sample_rate > 0:
tb = TopBlock22(sample_rate)
tb.start()
if __name__ == '__main__':
app.run(debug=True)
编辑:这次最后一个版本。
它采用lock/unlock
和disconnect/connect
改变声,而无需创建新的对象。 基于例如从常见问题( 我如何可以重新配置流图?我用锁(如何做),解锁()? ),但disconnect
需要两个端点就像connect
。
from __future__ import print_function
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
class TopBlock22(gr.top_block): # PEP8: CamelCaseName for classes
def __init__(self, sample_rate=32000):
gr.top_block.__init__(self, "Top Block 22")
##################################################
# Variables
##################################################
self.sample_rate = sample_rate
print('[TopBlock22] __init__: sample_rate:', self.sample_rate)
##################################################
# Blocks
##################################################
self.blocks_add_xx = blocks.add_vff(1)
self.audio_sink = audio.sink(32000, '', True)
self.analog_sig_source_x_1 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)
##################################################
# Connections
##################################################
self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))
def change(self, sample_rate):
self.sample_rate = sample_rate
print('[TopBlock22] change: sample_rate:', self.sample_rate)
# lock
self.lock()
# disconect - needs two endpoints (not like in FAQ)
self.disconnect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.disconnect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
# create new
self.analog_sig_source_x_1 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
self.analog_sig_source_x_0 = analog.sig_source_f(sample_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
# connect again
self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
# unlock
self.unlock()
# -----------------------------------------------------------------------------
from flask import Flask, request, jsonify
app = Flask(__name__)
tb = None # global variable to keep it between requests
@app.route('/')
def index():
return '''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GNURadio Slider Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
<div id="slider"></div>
<script>
// keep slider's value
var val;
// create slider
$("#slider").roundSlider({
radius: 215,
min: 0,
max: 100000,
value: 32000, // default value at start
change: function () {
var obj = $("#slider").data("roundSlider");
val = obj.getValue();
$.getJSON('/valueofslider', {
slide_val: val
});
}
});
// play sound at start
$.getJSON('/valueofslider', {slide_val: val});
</script>
</body>
</html>'''
@app.route('/test')
def test():
HTML = 'HEAR:'
for item in (0, 10000, 20000, 25000, 32000):
HTML += ' <a href="/set/{}">{}</a>'.format(item, item)
return HTML
@app.route('/off')
def off():
"""Turn off sound."""
sound(0)
#return jsonify({'val': 0})
return 'off'
@app.route('/set/<int:value>')
def set_value(value):
"""Set value. Use 0 to turn it off."""
sound(value)
#return jsonify({'val': value})
return str(value)
@app.route('/get')
def get_value():
"""Get value. Returns 0 when turned off."""
if tb:
value = tb.sample_rate
else:
value = 0
#return jsonify({'val': value})
return str(value)
@app.route('/valueofslider')
def slide():
sample_rate = request.args.get('slide_val', '32000')
sample_rate = int(sample_rate)
sound(sample_rate)
#return jsonify({'val': sample_rate})
return str(sample_rate)
def sound_old(sample_rate):
"""version which doesn't use `change()`"""
global tb
print('[sound] sample_rate:', sample_rate)
sample_rate = int(sample_rate)
# stop old sound
if tb: # if tb is not None
tb.stop()
tb.wait()
tb = None
# create new sound (if not zero)
if sample_rate > 0:
tb = TopBlock22(sample_rate)
tb.start()
def sound(sample_rate):
"""version which uses `change()`"""
global tb
print('[sound] sample_rate:', sample_rate)
sample_rate = int(sample_rate)
# change or stop old sound
if tb: # if tb is not None
if sample_rate > 0:
tb.change(sample_rate)
else:
tb.stop()
tb.wait()
tb = None
# create new sound (if not zero)
if not tb:
if sample_rate > 0:
tb = TopBlock22(sample_rate)
tb.start()
if __name__ == '__main__':
app.run(debug=True)
编辑:我发现, sample rate
可以与变化
self.analog_sig_source_x_1.set_sampling_freq(sample_rate)
所以它并没有创造新的sig_source_f
class TopBlock22(gr.top_block):
# ... rest ...
def change(self, sample_rate):
self.sample_rate = sample_rate
print('[TopBlock22] change: sample_rate:', self.sample_rate)
self.analog_sig_source_x_1.set_sampling_freq(sample_rate)
self.analog_sig_source_x_0.set_sampling_freq(sample_rate)
我想,现在我没有听到点击,当它改变sample rate
,但现在我填写它具有体积小延迟它点击鼠标后更改之前。
要查看此对象的其它功能,你可以使用dir(self.analog_sig_source_x_1)
print('\n'.join(dir(self.analog_sig_source_x_1)))
...
set_amplitude
set_block_alias
set_frequency
set_max_noutput_items
set_max_output_buffer
set_min_noutput_items
set_min_output_buffer
set_offset
set_processor_affinity
set_sampling_freq
set_thread_priority
set_waveform
...
来源: 选择限定和配置块 , 文档C / C ++版本