2012-12-19 78 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()',所以它只在右侧修剪。 –