我正在与pySerial斗争。简而言之......下面的代码在Python Shell中执行时效果很好......
>>> import serial
>>> s=serial.Serial("COM5", 9600)
>>> while(1):
s.write("#")
s.readline()
在shell中生成以下输出:
1L
'56.73\r\n'
1L
'56.73\r\n'
当在脚本中写入相同的代码时说“readSerial.py”,脚本将不会传输触发串行设备传输数据的主题标签,或者不会接收回复的数据。
我正在使用pySerial 3,但注意到与2.7相同的行为。在Win10上使用Python 2.7.10 64位。但是也注意到Raspberry Pi上使用/ dev / ttyACM0的这种行为。我真的想解决这个问题。我不是那种Python经验,所以这可能是一种疏忽。
检查硬件并进行双重检查。
谢谢,
KK
谢谢,但我真的知道如何从Python打印数据。问题实际上是pySerial。这是完整的代码,请不要在注释掉的代码中讨论错误。这些都不用担心。
#from numpy import array
#import matplotlib.animation as animation
import time
import serial as s
#data = array([])
Arduino = s.Serial("COM5", 9600)
i = 0
while (1):
try:
Arduino.write("#")
time.sleep(.1)
inString = Arduino.readline()
data = float(inString)
print i, ":", data
i += 1
time.sleep(1)
except KeyboardInterrupt:
break
Arduino.close()
但是就像说这不起作用。据我所知,readline()函数不返回。并且......通过设置tx超时使其返回真的没有意义。增加谜题;当代码被调试时(即步骤槽),它确实有效。
提前致谢,
KK
答案 0 :(得分:1)
来自FAQ :
示例适用于serial.tools.miniterm但不适用于脚本。
打开端口时会切换RTS和DTR线。这可能 导致连接设备上的某些处理或重置。在这样的 在紧接着调用write()之后,可能不会收到 设备。
在第一次写入()之前打开端口后的延迟 建议在这种情况下。例如。 a time.sleep(1)