2014-11-05 43 views
0

我使用pyserial讀取數據從一個串行端口,有時我得到的數據意外表現Python的陣列行爲古怪

這裏是重要的代碼

def getResponse(): 
    while ('\r' != rbuf[-1]): 
     rbuf += s.read(s.inWaiting()) 
     print("b " + binascii.hexlify(rbuf)) 

    rbuf = rbuf.split('\r') 
    rbuf = rbuf[:-1] 
    print rbuf 
    for char in rbuf: 
     if(char == AFTER): 
      print('a') 
     elif(char == 'W'): 
      print("Writing to the file") 
     elif(char != ''): 
      print char 
      return char 
    getResponse() 

我明白,這是不編寫代碼的最佳方式,但是會發生非常類似的情況。

當我收到序列[「一個」,「A」]的值返回最終被NONE。(我與在代碼

別處打印語句檢查時,收到這不會發生[ 'W', 'A', 'A'],或當我recive [ 'A']

我身邊figuired了工作,但我真的很好奇這個!!

感謝

+0

由於壓痕,只出現'的情況下'elif的return'(字符= ''!):' – jonrsharpe 2014-11-05 16:17:27

+0

我只有在這種情況下返回。 (因此,如果它不工作,遞歸調用) – Treesrule14 2014-11-05 16:18:16

+0

因此,如果該'elif'永遠不會執行,那麼你到達函數的末尾而不返回任何東西,所以'None'被隱式返回。這對我來說並不奇怪。 – Kevin 2014-11-05 16:18:53

回答

2

我並不完全瞭解你的代碼,但我強烈懷疑你想要在函數結尾處遞歸調用getResponse的結果return。如果是這樣,你需要明確return。只是調用函數不會爲你做。

getResponse() 

變爲

return getResponse() 
+0

謝謝!這工作。 – Treesrule14 2014-11-05 16:26:21