ESP8266 - 终端连接不工作但 Python 脚本
ESP8266 - Terminal Connection not working but Python script
我已将 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和低频?)
我使用了相同的波特率和设置,但没有成功。我尝试过切换硬件和软件流控,并检查了要添加的 CR 和 LF。
知道为什么这行不通吗?
我注意到,如果我打开了 minicom,然后 运行 Python 脚本,ESP8266 的输出会显示在 minicom 中,指示和发送问题。(脚本失败导致 minicom 拦截收到的消息)
好的...我找到了解决这个问题的办法。问题是ESP8266在每次AT命令后需要CR + LF才能响应。
要使用 Putty 执行此操作,您需要按 Ctrl+M 和 Ctrl+J 手动插入 CR+LF。作为替代方案,可以使用 Arduino IDE - Serial window,因为它允许您自动添加 CR+LF。(Arduino IDE 也适用于大多数 OS' s)
除了上面提到的CR+LF问题,有些板子有DTR连接到ESP8266 GPIO以上传固件,所以你的终端程序不应该为了让ESP8266正确响应而将DTR拉低。
您可以在不更新固件的情况下断开 DTR,或者尝试另一个不使用 DTR 进行控制的终端程序。
如果 GUI 没问题,linux 上的 cutecom
有使用 CR/LF 行结尾的设置
如果你需要一个终端 picocom 可以工作
$ picocom --omap crcrlf /dev/ttyUSB0
我已将 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和低频?)
我使用了相同的波特率和设置,但没有成功。我尝试过切换硬件和软件流控,并检查了要添加的 CR 和 LF。
知道为什么这行不通吗?
我注意到,如果我打开了 minicom,然后 运行 Python 脚本,ESP8266 的输出会显示在 minicom 中,指示和发送问题。(脚本失败导致 minicom 拦截收到的消息)
好的...我找到了解决这个问题的办法。问题是ESP8266在每次AT命令后需要CR + LF才能响应。
要使用 Putty 执行此操作,您需要按 Ctrl+M 和 Ctrl+J 手动插入 CR+LF。作为替代方案,可以使用 Arduino IDE - Serial window,因为它允许您自动添加 CR+LF。(Arduino IDE 也适用于大多数 OS' s)
除了上面提到的CR+LF问题,有些板子有DTR连接到ESP8266 GPIO以上传固件,所以你的终端程序不应该为了让ESP8266正确响应而将DTR拉低。
您可以在不更新固件的情况下断开 DTR,或者尝试另一个不使用 DTR 进行控制的终端程序。
如果 GUI 没问题,linux 上的 cutecom
有使用 CR/LF 行结尾的设置
如果你需要一个终端 picocom 可以工作
$ picocom --omap crcrlf /dev/ttyUSB0