现在获得输出,但它是错误的发布后修改以反映进度。
我一直在阅读文档以及本网站的以下链接。我能够找到一个可以从我的Arduino串行输出中读取数据的脚本。
如下:
import time
import serial
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
port='/dev/ttyACM0',
baudrate=115200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
ser.isOpen()
print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
input=1
while 1 :
# get keyboard input
input = raw_input(">> ")
# Python 3 users
# input = input(">> ")
if input == 'exit':
ser.close()
exit()
else:
# send the character to the device
# (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
ser.write(input + '\r\n')
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(1)
if out != '':
print ">>" + out
打开Python的输出窗口并执行代码。我可以输入'exit'退出或'读',现在在Python输出窗口中填充了大量来自Arduino串行监视器的行。
我想要的是让Arduino的输出不断填充在Python输出窗口中。 (稍后我将尝试使用Matplotlib绘制数据)
我以前尝试从Arduinb读取所有内容的代码就是这样:
import time
import serial
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
port='/dev/ttyACM0',
baudrate=115200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
ser.isOpen()
input=1
while True:
#First things first, lets wait for data prior to reading
time.sleep(1)
if (ser.inWaiting()>0):
myArduinoData = ser.read()
print myArduinoData
但是,当我使用上面的代码时,Python执行会挂起,而我从串行监视器中得不到任何输出。 现已通过上述代码和社区帮助
对此进行了更正新问题是输出只给出一个数字值,而不是输出到Arduino串行监视器的两到三位数值。
感谢 @jalo 通过在inWaiting和ser.read语句中指定字节值,我能够获得有问题的值。更改如下:
(ser.inWaiting()>4):
ser = ser.read(4)
谢谢。