PySerial应用在shell中运行,但不是py脚本
我有一个非常简单的Python脚本,它使用pySerial库通过串口向我的Arduino发送数据。当我在Python的命令行中逐行执行这个代码时,一切都正常,但当我把它放到一个“.py”文件里运行时,却没有任何反应。虽然我的UART上的串口灯会闪烁,这说明数据是有发送出去的,但内容却是乱码(我检查过了)。
下面是这个简单的代码。
import serial
ser = serial.Serial('COM3',9600,timeout=.2)
ser.write('A')
ser.close()
我已经尝试过添加延迟,但似乎没有解决问题。有没有什么建议?
6 个回答
1
我发现如果你在使用64位的Windows系统,pyserial这个库就会出现问题。我用的是Python 2.7,在通过管理员账户安装了x86版本之后,使用上面提到的代码
time.sleep(1)
ser.setDTR(level=0)
time.sleep(1)
在写入之前加上,并且记得在之后关闭端口,我就能让它作为脚本运行,而不仅仅是在命令行中运行。另外,确保你以管理员身份运行Python的图形界面或命令行,这对我来说也有很大的帮助。还有,在运行代码之前,确保Arduino上的串口监视器是关闭的。
2
import serial
import time
ser = serial.Serial('/dev/ttyACM1', 9600, timeout=1)
time.sleep(3) # this will needed for initializing arduino
serial.write(b'1') # b is necessary for byte
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
7
好的,我搞明白了!
在进行写入之前,必须使用这样的代码:
time.sleep(1)
ser.setDTR(level=0)
time.sleep(1)
否则,Arduino会因为某种原因在接收到串口连接时自动重启。太棒了!