2015-01-12 26 views
0

我已將ESP8266 Wifi連接到串行模塊以串行連接到USB連接器。ESP8266 - 終端連接不工作,但Python腳本

我能夠用以下連接到ESP8266 Python腳本和設置:

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) 

上述工程就像一個魅力,但由於某種原因,我不能做同樣在終端像小型機,GTKTerm, Putty。(運行Ubuntu。任何顯示CR和LF的顯示終端)

我使用了相同的波特率和設置,但沒有運氣。我試圖切換硬件和軟件流量控制,並檢查了要添加的CR和LF。

任何想法,爲什麼這不起作用?

我注意到,如果我有小型機打開,然後運行從ESP8266的輸出被顯示在小型機指示和發送問題的Python腳本(腳本失敗導致小型機截獲傳入消息)

回答

8

權。 ..我找到了這個問題的解決方案。問題是ESP8266在每個AT命令響應後都需要CR + LF。

要用Putty做到這一點,您需要按Ctrl + M和Ctrl + J手動插入CR + LF。作爲替代方案,可以使用Arduino IDE - 串行窗口,因爲它允許您自動添加CR + LF(Arduino IDE也適用於大多數操作系統)

+2

Bertus!我希望我可以爲這個職位捐贈你的名譽。我一直在嘗試四個小時才能獲得好的命令。我正在發送簡單的AT + RST到我的esp,並獲取並回顯「ERROR」。我所要做的只是在Termite 3.1中添加cr-lf。謝謝! – Roger

2

除了上面提到的CR + LF問題,將DTR連接到ESP8266 GPIO以上載固件,因此您的終端程序不應將DTR拉低以使ESP8266正確響應。

您可以在不更新固件的情況下斷開DTR,也可以嘗試另一個不使用DTR進行控制的終端程序。

2

如果GUI是好的,cutecom在Linux上有一個設置使用CR/LF行結束

如果你需要一個終端picocom可以工作

$ picocom --omap crcrlf /dev/ttyUSB0 
相關問題