社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何比较python中ser.readline()的输出?

Nate • 5 年前 • 1375 次点击  

我正在编写一个在Raspberry Pi 2模型B和Arduino UNO之间进行接口的代码,我无法通过将ser.readline()的输出与变量进行比较得到肯定的响应。下面是我的raspberry-pi代码的代码片段,其中“u”只是我发送给arduino让它解释的命令,我已经能够确认它能够成功地解释它。

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')

在Arduino上,我发送给ser.write(命令)的响应是

Serial.write("ON\n")

不管我用什么来比较这两个值,pi总是打印“再试一次”,即使当我打印res值时,它清楚地打印“on”。

我错过了什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/41032
 
1375 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Nate
Reply   •   1 楼
Nate    6 年前

通过检查答案是否在读取值的子字符串中,我可以让它工作:

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
blhsing
Reply   •   2 楼
blhsing    6 年前

这个 readline 方法返回一个结尾有换行符的字符串,因此您应该将其与结尾有换行符的值进行比较,或者在进行比较之前从字符串中删除换行符:

if res == 'ON\n':

或:

res = ser.readline().rstrip()