ubuntu - ESP8266 - 终端连接不起作用,但 Python 脚本

标签 ubuntu serial-port arduino wifi iot

我已将 ESP8266 Wifi 转串口模块连接到串口转 USB 连接器。

我可以使用以下 Python 脚本和设置连接到 ESP8266:

import serial

def echoCommand(cmd,expected_return,halt_on_fail,tOut = timeoutPeriod) :
    ser.write(cmd + '\r\n')

    if(echo_local_command):
        print('Sent --> '+cmd)

    if not echoFind(expected_return,tOut) and (halt_on_fail):
        print(cmd+" failed")
        sys.exit()

def echoFind(expected_return,tOut):
    timeoutTime = datetime.datetime.now() + datetime.timedelta(0,tOut)
    while datetime.datetime.now() < timeoutTime:
        while ser.inWaiting():
            ret = ser.readline().rstrip()
            print ret
            time.sleep(0.1)
            if expected_return in ret:
                return True
    return False 

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=5)

echoCommand('AT+RST', 'ready', True)

上面的工作就像一个魅力,但由于某种原因,我不能在 minicom、GTKTerm、Putty 等终端中做同样的事情。(运行 Ubuntu。任何建议的终端会显示 CR 和 LF?)

我使用了相同的波特率和设置,但没有运气。我尝试切换硬件和软件流控制,并检查了要添加的 CR 和 LF。

任何想法为什么这不起作用?

我注意到,如果我打开 minicom 然后运行 ​​Python 脚本,ESP8266 的输出会显示在 minicom 中,指示和发送问题。(脚本失败导致 minicom 拦截传入的消息)

最佳答案

对...我找到了解决这个问题的方法。问题是 ESP8266 在每个 AT 命令响应后都需要 CR + LF。

要使用 Putty 执行此操作,您需要按 Ctrl+M 和 Ctrl+J 手动插入 CR+LF。作为替代方案,可以使用 Arduino IDE - Serial 窗口,因为它允许您自动添加 CR+LF。(Arduino IDE 也适用于大多数操作系统)

关于ubuntu - ESP8266 - 终端连接不起作用,但 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895654/

相关文章:

python - PySerial 不与 Arduino 交谈

c - 通过单声道辅助线将音调从 arduino 发送到 3.5 毫米插孔的扬声器

c - Switch Case 中的 If Else 和字符串

python - Ubuntu错误: Already running on PID 14733

ubuntu - 无法从可执行文件中删除 rpath

c++ - 在 Windows 中通过串行写入二进制数据

c++ - 如何将RJ45称为串口进行对接?

java - 如何设置tomcat应用服务器的home执行目录?

ubuntu - 无法启动 Vagrant (Ubuntu 16.04)

java - 实时 FFT 绘图