Python(Raspberry Pi 3)-函数调用赢得';不能在if语句中工作

Python(Raspberry Pi 3)-函数调用赢得';不能在if语句中工作,python,if-statement,while-loop,raspberry-pi,pyaudio,Python,If Statement,While Loop,Raspberry Pi,Pyaudio,我有点奇怪的问题。我目前正在使用树莓皮3创建一个系统。我们的目标是让一个程序能够无限期地继续运行,在同一组条件中反复循环。 为此,我将pyaudio中的代码放入一个函数中,稍后在while循环中的if语句中调用该函数 代码如下: print ("System ON") def recordCASCON(): CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECOR

我有点奇怪的问题。我目前正在使用树莓皮3创建一个系统。我们的目标是让一个程序能够无限期地继续运行,在同一组条件中反复循环。
为此,我将pyaudio中的代码放入一个函数中,稍后在while循环中的if语句中调用该函数

代码如下:

    print ("System ON")


def recordCASCON():
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 2
    RATE = 44100
    RECORD_SECONDS = 60
    WAVE_OUTPUT_FILENAME = "cascon.wav"

    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

    print("* recording")

    frames = []

    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
        print(i)

    print("* done recording")

    stream.stop_stream()
    stream.close()
    p.terminate()

    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()


while True:

    if GPIO.input(LedPin4) == GPIO.HIGH and GPIO.input(LedPin5) == GPIO.HIGH:
        print("initiating")
        recordCASCON()
我还要指出以下几点。该函数在自己调用时工作得非常好。在while循环中调用时,它也可以正常工作。只有在if语句中调用时,我才能在shell中获得以下内容:

System ON
initiating
* recording
从我的代码中可以看到,该函数运行60秒,并在for循环中打印i索引。当函数工作时,它运行一系列数字60秒,然后我最终得到“完成录制”。在这种情况下,我可以离开它几个小时,仍然被卡住。 如果我在If语句的末尾添加一个“break”,它所做的全部工作如下:

System ON
initiating
* recording
0
它在0上获取库存,而不是录制

有什么建议或帮助吗?
谢谢大家!

看起来您是在为微控制器之类的硬件编码,您是否检查过您的条件语句是否不会弄乱您的音频设备?例如,一次激活条件意味着语音模块的某些引脚出错了?

我使用的音频注入板覆盖了所有raspberry pi 3 GPIO。音频注入器板本身有自己的GPIO设置,我已将其连接到系统。因此,如果我理解正确,您认为GPIO电压的变化可能导致音板无法正常工作?您已经检查了没有if条件的所有可能情况,指出问题可能是硬件问题造成的,例如,特定的引脚配置,因为它们可能会干扰您的音频模块或电源问题。这超出了我的推理范围,但我必须说,您可能是绝对正确的。在这个项目中,如果我告诉你我以前在硬件方面没有任何问题,那我就是在撒谎。像你这样需要共同设计硬件和软件的编程项目可能很棘手,但也很有趣,也很有价值