我正在编写在Raspberry Pi 2 Model b和Arduino Uno之间连接的代码,并且无法通过将ser.readline()的输出与变量进行比较来获得肯定的响应。下面是我的Raspberry pi代码的代码片段,其中“ u”只是我发送给arduino以便其解释的命令,我已经确认它可以成功解释它。
let options = [
{label: 'foo1', selected: false},
{label: 'foo2', selected: true},
{label: 'foo2', selected: false},
{label: 'foo2', selected: false},
{label: 'foo2', selected: false},
{label: 'foo2', selected: true},
{label: 'foo2', selected: 1}
];
const obj = options.reduce((acc, currentValue, index) => {
// checking only for boolean true not for truthy values
return acc = currentValue["selected"] === true ? [...acc, index] : acc;
}, []);
console.log(obj);
在arduino上,作为对ser.write(command)的响应,我发送的全部是
while 1:
time.sleep(1)
ser.write(u.encode('utf-8'))
print('ACK sent')
res = ser.readline()
if res = 'ON':
print('Pass')
else:
print('Try again')
无论我用什么来比较两个值,Pi始终会打印“重试”,即使我打印res值时,它也会清晰地打印“ ON”。
我在这里想念什么?
答案 0 :(得分:0)
readline
方法返回一个以换行符结尾的字符串,因此您应该将其与一个以换行符结尾的值进行比较,或者在进行比较之前从字符串中去除换行符:
if res == 'ON\n':
或:
res = ser.readline().rstrip()
答案 1 :(得分:0)
通过检查答案是否在读取值的子字符串中,我能够使其正常工作:
while 1:
time.sleep(1)
ser.write(u.encode('utf-8'))
print('ACK sent')
res = ser.readline()
result = res.find('ON')
if result > -1:
print('Pass')
else:
print('Try again')enter code here