首先,我是python的新手,如果这是一个愚蠢的问题,我深表歉意(我有C ++的背景)。
我正在尝试将串行数据(来自arduino)分成一个列表,并将列表中的特定元素打印到控制台中。因为它们并不重要,所以我不会介绍项目的详细信息。
原始串行数据如下:
11111110,11111111,11111111
11111110,11111111,11111111
11111110,11111111,11111111
我要使用的代码是
#!/usr/bin/python
import serial, string
output = " "
ser = serial.Serial('/dev/ttyUSB0', 31250, 8, 'N', 1, timeout=1)
while True:
print "----"
while output != "":
output = ser.readline()
outList = output.strip().split(',')
print outList[1]
output = " "
我遇到了错误:
Traceback (most recent call last):
File "serialtest.py", line 12, in <module>
print outList[1]
IndexError: list index out of range
我尝试将print outList[1]
替换为print(outList)
,并且得到了预期的结果:
['11111110', '11111111', '11111111']
['11111110', '11111111', '11111111']
['11111110', '11111111', '11111111']
我可以让print outList[0]
工作,并打印11111110
。这表明也许不喜欢11111111
?
答案 0 :(得分:0)
在尝试分割output
之前,您需要测试outLine
是空字符串。
您还需要在测试之前剥离while True:
print "----"
while True:
output = ser.readline().strip()
if output == "":
break
outList = output.split(',')
print outList[1]
,而不仅仅是在拆分时。
$var = "clip$t"
echo $$var;