[英]How to print response to AT commands in Arduino serial port?
我想打印對AT命令的響應。 我正在發送AT命令,但在Arduino串行端口中沒有任何響應。 它給出-1而不是OK。
#include "SoftwareSerial.h"
String ssid = "connectify-krish";
String password = "12345678";
String myword= "";
SoftwareSerial esp(10, 11);
void setup() {
Serial.begin(9600);
esp.begin(9600);
esp.write("AT");
Serial.println(esp.read());
}
void loop() {}
正如注釋中已經指出的那樣,您不會終止AT命令行,因此調制解調器將永遠不會對此做出響應。
確保您閱讀了V.250,並了解了AT命令和AT命令行之間的區別。 ATI
是一個AT命令,而"ATI II\\r"
是一個連續三次調用此命令的命令行。 順便提一下,在此示例中,您將只為全部三個獲得一個最終結果代碼,即,最終結果代碼是對完整命令行的響應,而不是對單個命令調用的響應。
然后,在更正命令的發送之后,您必須對響應進行正確的處理。 這包括讀取和解析調制解調器作為響應發送的命令行而發送回的內容。 有關代碼結構和實現提示,請參見此答案 。
如您所知,請使用回車符\\r
終止AT命令。 同樣,您當前的代碼將只讀取響應的一個字節,那就是響應是否到達,因為您根本沒有延遲。 要與串行監視器以交互方式與ESP通信,建議使用以下命令:
#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);
void setup(){
Serial.begin(9600);
esp.begin(9600);
}
void loop()
{
while (Serial.available()) // forward data from monitor to esp
esp.write(Serial.read());
while (esp.available()) // forward data from esp to monitor
Serial.write(esp.read());
}
基本上,這使Arduino成為PC與ESP之間通信的通道。 您可以使用串行監視器將命令發送到ESP,並立即獲得其結果。 非常適合測試命令。 只記得將串行監視器設置為BOTH NL & CR
; 這將對命令以及您發送的所有HTTP請求都非常有用,因為它將\\r\\n
附加到您發送的所有內容中。
如果確實要編寫草圖與ESP對話,則在發送命令后必須提供一些延遲,以等待模塊處理該命令並做出響應。 延遲取決於命令,至少500ms。 通常的過程是為每個命令定義一個超時時間,具體取決於期望的時間,如果沒有響應,您可以“放棄”。 GitHub上有很多庫,涉及使用AT命令與某些設備對話; 學習他們以學習他們的技術。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.