이상한 문제가 있습니다. 나는 현재 Raspberry Pi 3를 사용하여 시스템을 만들고 있습니다. 목표는 계속해서 동일한 조건을 반복하면서 무한정 실행되는 프로그램을 만드는 것입니다.
이렇게하려면 pyaudio 코드를 나중에 while 루프 내에서 if 문 내부에서 호출하는 함수에 넣습니다. 나는 또한 다음 사항을주의 할Python (Raspberry Pi 3) - 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 문 내에서만 호출 할 때 : 당신이 내 코드에서 볼 수 있듯이System ON
initiating
* recording
, 함수는 60 초 동안 실행하고 for 루프에서 내가 인덱스를 인쇄합니다. 함수가 작동하면 60 초 동안 일련의 숫자가 실행되고 마침내 "녹음 완료"상태가됩니다. 이 경우 나는 그것을 몇 시간 동안 그대로두고 아직도 붙어있다. 나는 경우 문장의 끝에 "휴식"을 추가 경우가하는 모든는 다음과 같습니다
System ON
initiating
* recording
0
대신 녹화 0에 재고를 가져옵니다.
어떤 제안이나 도움이 필요합니까? 감사합니다.
모든 라즈베리 파이 3 GPIO를 처리하는 오디오 인젝터 보드를 사용하고 있습니다. 오디오 인젝터 보드 자체에는 시스템에 연결된 GPIO 세트가 있습니다. 따라서 올바르게 이해하면 GPIO 전압의 변화로 인해 사운드 보드가 작동하지 않을 수 있다고 생각하십니까? – rainwhole
if 조건없이 가능한 모든 시나리오를 점검 한 사실은 오디오 모듈을 방해하거나 전원 문제가 발생할 수 있으므로 특정 핀 구성과 같은 하드웨어 문제로 인해 문제가 발생할 수 있음을 지적합니다. –
는 내 추론을 넘어서는 것이었지만 나는 당신이 절대적으로 옳을 수도 있다고 말하고 싶습니다. 이 프로젝트를 진행하는 동안 전에 하드웨어에 문제가 없다고 말하면 나는 거짓말을합니다. – rainwhole