2017-10-19 41 views
2

所以我有一個難題。我們從我的代碼的相關片段開始。Python:While循環內導入函數的奇怪問題

from RECORD import recordSystem 

recTime = 30 #Amount of time(seconds) I want to record the audio input 

while True: #I want to keep this active while system is running 

#Standard raspberry Pi input sensors. 
if(GPIO.input(LedPin4) == GPIO.LOW and GPIO.input(LedPin5) == GPIO.HIGH: 
    recordSystem(recTime) #when condition is met run the code. 

所以我試圖運行的函數來自我寫的另一個腳本。它的工作原理。它會記錄模擬音頻並在我的項目文件夾中創建一個.wav文件。這個代碼的問題在於,它昨天完美地發現,現在不是。沒有任何改變或感動。它只是不想工作。會發生什麼是循環開始,當條件滿足時,函數正常啓動,並在編譯器中獲得「錄製」通知。但它永遠不會停止錄製。 當我只是做了以下的循環之外:

recordSystem(recTime) 

功能通過正常運行沒有任何問題。所以它必須在循環內調用函數。然而,它在一段時間內沒有任何問題。 任何人都可以給我一個最好的客人可能會發生什麼? 非常感謝!

+1

這是您的代碼的確切格式嗎? –

+0

該代碼不會運行。它有一個語法錯誤,由於額外的'(',它沒有正確縮進。但除此之外,爲什麼你在無限'while'循環內調用'recordSystem'? –

+0

是的,我的錯。在我的實際版本中,沒有複製粘貼,額外的(不存在於實際的腳本中,我有一個無限的while循環,因爲這個系統需要在應用程序處於活動狀態時持續運行,現在,這只是一個縮減我的代碼中有其他的聲明,但是它們與我遇到的這個特定的問題沒有關係 – rainwhole

回答

0

在您的recordSystem(recTime)應該做的訣竅之後添加break聲明!我還修復了縮進,並從代碼中刪除了額外的(

from RECORD import recordSystem 

recTime = 30 #Amount of time(seconds) I want to record the audio input 

while True: #I want to keep this active while system is running 

    #Standard raspberry Pi input sensors. 
    if GPIO.input(LedPin4) == GPIO.LOW and GPIO.input(LedPin5) == GPIO.HIGH: 
     recordSystem(recTime) #when condition is met run the code. 
     break 
+0

謝謝你的迴應,所以除了需要留在循環中去完成更多的任務之外,我的確嘗試了你的解決方案,看看這個while循環是否讓它變得糟糕了,遺憾的是沒有,這個中斷不會讓這個函數發揮作用,它仍然會在錄製中獲得存貨 – rainwhole

+0

你可以爲這個問題添加'recordSystem'函數嗎? –