2012-12-19 73 views
-2

我正在編寫一個程序,它將命令代碼發送到串行設備,並從設備獲取響應,然後發送另一個命令。我可以完美地發送命令,甚至可以得到迴應。但是,如果我的陳述似乎沒有答覆答覆。Python,響應和if語句

例子:

response = sendCommand(beep) 
if response == '0D6010100': 
    print"Command beeped!" 

就像我提到的,我得到的0D6010100成功響應代碼,但if語句不承認它。有任何想法嗎?

我使用Python 2.7工作,並使用PySerial

UDPATE:

打印類型(響應)給我: 印刷再版(響應)給我: '0D6010100 \ r \ n' 我承擔repr(迴應)結束時的\ r \ n在這個問題上有一些好處?

+2

那麼,什麼是'打印類型(響應),再版(響應)'說明了什麼?也許迴應不是你想象的那樣。 – DSM

+0

是一個字符串或數字的返回值? – avasal

+0

如何提供響應?它真的是一個字符串,還是一個base2數字? – tacaswell

回答

2

您需要先修剪響應:

if response.rstrip() == '0D6020100': 
    print 'beepity boop beep woohoo!' 
+0

謝謝,完美的工作!儘管我可能會在sendCommand中使用.strip(),以避免將它添加到所有需要它的行。乾杯! – Gramps

+1

你可以使用'rstrip('\ r \ n')'來具體描述你剝離的東西。 –

2

正如你懷疑的那樣,最後\r\n是問題所在。做

response = sendCommand(beep).strip() 

去掉字符串末尾的空白。

+0

謝謝,完美的工作!我只能接受一個答案,所以我接受了第一個答案。儘管你的實現是我使用的。最後,正如我上面提到的,我可能會在sendCommand中使用.strip()來避免反覆添加它。乾杯! – Gramps

+0

請注意,這將從左側和右側修剪 - 它可能不是你想要的。在我的答案它的'rstrip()',所以它只在右側修剪。 –