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 在脚本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Adminlte 脚本在 Laravel 中不起作用

PHP 脚本在直接管理员中不起作用,但在 cPanel 中起作用

WinActivate 在自动热键脚本中不起作用

为啥 button.click() 在我的脚本中不起作用?

脚本在实际服务器中不起作用,但在 localhost XAMPP 中起作用

串行 AT 命令在 python 脚本中不起作用,但在 Minicom 中起作用