【问题标题】:read() return type in PythonPython 中的 read() 返回类型
【发布时间】:2014-10-29 17:17:45
【问题描述】:

我正在使用 Arduino 从引脚读取并通过串行端口发送值。根据返回的值,我想让 python 做点什么,但我的 if 语句永远不会返回 true。

import serial
ser = serial.Serial('COM7',9600)

while True:
    data = ser.read()
    print data
    if data == 'a':
            print 'data received'

我能够更改引脚状态并打印出数据的值,它确实返回了“a”,但从未打印过“收到的数据”。我做错了什么?

【问题讨论】:

  • 确保末尾没有换行符。
  • @tidB 强调了一点。尝试“line = ser.readline()”并查看数据中是否有 'a'。

标签: python python-2.7


【解决方案1】:

这是因为隐含的换行符。将您的 if 语句更改为:

if data == 'a\n':

【讨论】:

  • 发布后不久(20 分钟前我的头撞到了墙上),我意识到 '\n' 一定是问题所在,而且确实是。感谢您的快速回复。
  • @awwende 很高兴我能帮上忙。如果我有帮助,请考虑在宽限期过后接受带有勾号的答案。 :)
  • 或者你也可以data.strip() == 'a'
  • @IanAuld 是的,但直接检查不会比strip 甚至rstrip 更快吗?
  • @AlexThornton 可能,但如果没有新行字符或存在不同的符号(\t\f\r\n),它将不匹配
猜你喜欢
  • 2021-03-06
  • 2020-02-29
  • 2012-03-14
  • 2018-01-31
  • 2012-06-09
  • 2020-06-02
  • 2016-04-08
  • 1970-01-01
  • 2018-08-20
相关资源
最近更新 更多