pySerial在一个脚本中工作但不在另一个脚本

时间:2016-11-17 14:50:48

标签: python arduino serial-port pyserial

现在获得输出,但它是错误的发布后修改以反映进度。

我一直在阅读文档以及本网站的以下链接。我能够找到一个可以从我的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)

谢谢。

0 个答案:

没有答案