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

时间:2015-01-12 05:09:36

标签: 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拦截传入的消息)

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

除了上面提到的CR + LF问题之外,有些主板已将DTR连接到ESP8266 GPIO以上传固件,因此您的终端程序不应将DTR拉低以使ESP8266正常响应。

您可以在不更新固件的情况下断开DTR,也可以尝试使用不使用DTR进行控制的其他终端程序。

答案 2 :(得分:2)

如果GUI没问题,linux上的cutecom有一个使用CR / LF行结尾的设置

如果你需要终端picocom可以工作

$ picocom --omap crcrlf /dev/ttyUSB0