PySerial 在脚本中不起作用
Posted
技术标签:
【中文标题】PySerial 在脚本中不起作用【英文标题】:PySerial doesn't work in script 【发布时间】:2015-03-28 12:18:06 【问题描述】:我对这个脚本有疑问:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import serial
import time
ser = serial.Serial("COM3", 9600, timeout=1)
ser.write("test")
print "Test started\n"
time.sleep(1)
ans = ser.read(4)
print ans
在 Arduino 中是 echo 程序(发送到 Arduino 的所有内容都已发送回计算机)。使用串行监视器一切正常。
当我运行我的 python 脚本时,它会在 ser.read() 上停止(它正在等待传入的数据)。但是,当我将脚本中的命令直接写入 python 控制台时,一切正常。
为什么我的从文件开始的代码不起作用?
我的操作系统:Windows 8.1(64 位) Python 版本:2.7.9(64 位)
【问题讨论】:
您是否记得在您的 Arduino 代码中编码write
?您可以在这里发布您的 Arduino 代码吗?
您的 arduino 是否在写入结束时寻找新行?例如。 ser.write("test\n")
.
@MauroBaraldi 这是我的 Arduino 代码。 void setup() Serial.begin(9600); void loop() if (Serial.available()) Serial.write(Serial.read());
@figs 没关系。 Arduino 应该响应每个字符。
@bigben 作为调试,每次在 Arduino 中接收数据时,您都可以闪烁 LED。也许你映射了错误的端口
【参考方案1】:
试试这个方法
import serial
import time
ser = serial.Serial("COM3", 9600, timeout=1)
ser.write("test")
print "Test started - data sent \n"
while True:
ans = ser.read(4)
if and:
print and
time.sleep(1)
【讨论】:
在while
之后插入pdb
调试语句并尝试调查。
感谢您的帮助,但我在这里有解决方案 link 。在我的情况下,使用 setDTR 的技巧有效。以上是关于PySerial 在脚本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
PHP 脚本在直接管理员中不起作用,但在 cPanel 中起作用