我有一个Arduino UNO,我正在与我的PC和UNO进行串行通信。我正在使用pyserial与UNO进行通信,我只收到我发送到微控制器的字符串的第一个字符。以下是串行通信的脚本:
import serial
import time
port = "\\.\COM4"
baudrate = 19200
parity=serial.PARITY_NONE
no=serial.EIGHTBITS
stopbits= serial.STOPBITS_ONE
ser=serial.Serial()
ser.port=port
ser.baudrate=baudrate
ser.timeout=1
ser.parity=parity
ser.bytesize=no
ser.stopbits=stopbits
ser.open()
time.sleep(1)
time.sleep(1)
ser.setDTR(level=0)
time.sleep(1)
ser.write("Hello World");
bytes=ser.read()
print bytes,
ser.close()
我已经设置了我的微控制器来回应发送给它的任何内容,我的程序退出而不打印字符串“Hello World”。但是,它会打印第一个字符“H”。我的脚本有问题吗?我使用Arduino串行监视器检查了我的微控制器代码,当我通过监视器发送数据时,它可以很好地回显输出。这段代码有什么问题?为什么我的代码不打印整个字符串,而只打印我传递给ser.write()方法的字符串的第一个字母?提前感谢您的回复!
答案 0 :(得分:1)
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
将整数个字节作为参数读取,因此要读取“Hello World”之类的内容,您需要将命令修改为ser.read()
。