1

我正在尝试将从串行端口接收的 ASCII 字符与字符串进行比较。我无法做到这一点,即使看起来我已经成功转换了输入。这是我的代码

import serial
import time 
port="/dev/ttyUSB0"
serialArduino= serial.Serial(port,9600)
serialArduino.flushInput()
inputs=""
while True:
    inputsp=serialArduion.readline()
    for letter in inputsp:
        inputs=inputs+ str(letter)
   print inputs
   if inputs=="DOWN":
       print "APPLES"
   elif inputs=="UP"
       print "Bannana"

好的,即使输入有时等于 UP 或 DOWN 它仍然不会打印出 APPLES 或 Bannana

4

2 回答 2

2

的返回值readline()包含换行符。你需要去掉换行符。

import serial
import time 
port="/dev/ttyUSB0"
serialArduino= serial.Serial(port,9600)
serialArduino.flushInput()

while True:
    inputs = serialArduion.readline().rstrip()
    if inputs == "DOWN":
        print "APPLES"
    elif inputs == "UP"
        print "Bannana"
于 2013-07-19T13:10:21.070 回答
0

尝试这个:

while True:
    inputsp=serialArduion.readline()
    for letter in inputsp:
        inputs=inputs+ chr(letter)
   print inputs
   if inputs.lower() =="down":
       print "APPLES"
   elif inputs.lower() =="up":
       print "Bannana"

只是将 'str' 更改为 'chr',它将 ASCII 转换为字符。除了这个修改,去掉来自输入流的任何其他字符。

于 2013-07-19T13:06:56.983 回答