題:
人們為什麼在串行通信中使用AT命令?
xsari3x
2012-02-07 05:34:44 UTC
view on stackexchange narkive permalink

我需要知道為什麼嵌入式系統中的人們使用AT命令?
當我問人們說這是一個標準時。

所以我的問題是:“ AT”是什麼意思?人們為什麼一直說這是一個標準?

+++ ATH0有人嗎?
@kinokijuf是什麼意思?
“為什麼嵌入式系統中的人們使用AT命令”-關於您的問題或串行鏈路上AT的使用,沒有嵌入式的特定內容。可能您已經在嵌入式系統上看到了這一點,但是下面將解釋其起源,並且它並非特定於嵌入式系統。 (注意不要用太寬的刷子​​刷東西。)
AT命令甚至在稱為“ modemu”的東西中實現:一個Unix程序,該程序創建一個主/從偽tty設備,並模擬實際上通過telnet傳輸的調製解調器。您可以使用“ ATD <主機名>”“撥號”主機。有趣的是,該程序幾乎是在我需要它的時候發布的,大約在1996年:0.0.1版。從那以後我就不需要了。仍然是0.0.1!我將它與minicom結合使用,通過telnet將zmodem傳輸到只能通過這種方式到達的遠程主機。
@kinokijuf請不要在評論中添加它。您只是使StackOverflow掛在我身上!:-)
五 答案:
supercat
2012-02-07 06:21:26 UTC
view on stackexchange narkive permalink

關於“ AT”命令的一個鮮為人知的細節是,許多調製解調器將以“自動波特率/自動奇偶校驗”模式啟動。最初,調製解調器開始時不會嘗試實際解碼任何串行數據,而只是監視寬度匹配相同有效位週期的連續的低脈沖和高脈衝(例如,3.333ms表示300波特,833us表示1200波特,等等)。 )。發現後,他們將查看下一個低脈衝是否為該寬度的五倍。如果是這樣,他們將注意另一個高-低-高或至少1.5倍高的時間。找到任何一個將表明調製解調器剛剛看到了所標識波特率的0x41或0xC1(即“ A”)。它將進一步指示連接的計算機正在使用8-N-1或7-E-1,或者它正在使用7-N-1或7-O-1。無論哪種情況,它都會尋找下一個字符為0x54或0xD4(即“ T”)。這樣可以使調製解調器進一步對字符長度和奇偶校驗設置進行分類。

請注意,“ AT”之前收到的所有內容都將被忽略。如果打開回顯功能,則只需鏡像所有線路轉換,而無需任何串行解碼,就可以將數據回顯到連接的計算機。如果計算機在“ AT”之前發送了數據,例如 b>

如今,一些設備使用初始“​​ A”進行自動波特率檢測,但是命令以“ AT”開頭的事實是基本上是歷史的好奇心。

嗯...你是什麼意思“ 7-N-1”?
七個數據位,無奇偶校驗,一個停止位。如果不打算發送任何設置了高位的數據,則數據的發送速度比8-N-1快11%。
除了通常在+++ AT或+++ AT命令的+++部分上進行過自動波特處理之外。參見http://en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
@david:在與時間無關的轉義序列文章中,我沒有看到任何有關自動波特率的內容,也沒有見過調製解調器以任何波特率接受+++而不是用於通信的波特率。在2400-8-N-1處連續發送的字符0x9E 0x86(或在2400-7-O-1處為^ N ^ F)將產生與*在1200處的“ +”字符完全相同的行轉換波特,因此對於波特訓練字符,我將“ +”視為一個奇怪的選擇。
Wikipedia(!)參考僅供那些不了解+++的人使用。我在“ U”上使用硬件,在自定義字符串上使用軟件。您知道標準嗎?所有用於啟動+++的連接字符串,因此在進行任何其他通信之前,自動波特率已完成。
@david:我已經看到具有硬連線功能的UART在“ A”上進行訓練。我不確定我是否喜歡“ U”,除非可以百分百確定某些重複的“ U”字符將被無間隙地發送,並且不會以2倍的正確波特率重複出現“ 3”序列。 “ A”的優點是其脈沖模式不能由任何其他任何波特率的位串產生。順便說一句,我曾經做過一個項目,用一個鬆散但可調的時鐘訓練一塊板,使之與PC以38400波特的速率通信,方法是讓PC以57600波特的速率交替發送$ 80和$ C0 [之間有停頓]。
在57600波特下,這些字符代表7或8位時間的低脈衝。在38400的波特率下,這些脈衝將變為5.33或4.67位時間的低脈衝,因此應將兩者都作為$ F0接收。如果接收方收到$ FC或$ F8,則速度太慢;如果得到$ E0或$ C0,則速度太快。一旦獲得連續的$ F0字符,就正確了。
Oli Glaser
2012-02-07 05:50:38 UTC
view on stackexchange narkive permalink

它是指 Hayes命令集,長期以來,它是通過串行線路向調製解調器(和其他設備)發出命令的標準。

不是命令和數據有兩條單獨的線,而是僅使用一條線,並且從某個數據序列發送到命令模式,例如發送+++,然後設置一定長度的暫停。然後,下一個數據被接收設備視為命令。
之所以使用這樣的東西,是因為它避免了需要另一對線路的事實,這在許多情況下根本不可用,尤其是在小型情況下嵌入式系統。

看看Wiki頁面和底部的鏈接-那裡有很多細節。

儘管原始AT集有各種各樣的擴展,所以我不會依靠所有提到AT的東西來實際使用所有原始Hayes命令。例如,我在這裡有一個藍牙串行芯片,IIRC使用它是它自己的AT類型集。
雖然我不是專家,但我只記得在過去的撥號和BBS時代用過各種命令。

Olin Lathrop
2012-02-07 20:09:18 UTC
view on stackexchange narkive permalink

“ AT”命令集用於解決需要在同一字節流通道上發送任意數據的帶外控制信息的問題。這是調製解調器的普遍問題,早在它們是通過串行電纜連接到計算機的外部盒時就已經存在。

Hayes是這種調製解調器的製造商,並且在早期很受歡迎。他們對帶外問題的解決方案是向調製解調器發送兩個字母的ASCII控制命令,並按特殊順序將其置於數據通過模式。為了減少看起來像命令的隨機物品的可能性,它們的命令序列均以AT命令開頭,AT命令代表“注意”。

Hayes獲得了巨大的市場份額,其他調製解調器製造商也不得不採用相同的命令設置為兼容。這樣,客戶可以使用其調製解調器而不必重新編寫軟件,而該軟件已經被設置用於驅動Hayes調製解調器。

如今,這種方案很少使用,但是固然如此普遍甚至在今天仍然處於黑暗的角落。

我喜歡這份關於Hayes的歷史筆記,以及它如何強制採用自己的標準,將您的答案與上述兩個答案結合起來已經足夠了:)
附帶地,許多更新的調製解調器似乎不再要求字符“ AT”為大寫,這增加了發送文本文件的過程中斷開連接將導致錯誤的調製解調器行為的頻率。
帶斷裂控制代碼為+++ AT或+++ <保護時間>。 AT是標準控件集的前兩個字符,代表ATtention。
Kolban
2015-06-15 05:38:59 UTC
view on stackexchange narkive permalink

有一個特別好的文檔,描述了“ AT”命令的歷史,可以在這裡找到:

http://nemesis.lonestar.org/reference/telecom/modems /at/history.html

其中包含許多關於協議如何產生的“歷史”的頁面。

Luke404
2018-03-20 20:34:32 UTC
view on stackexchange narkive permalink

為什麼嵌入式系統中的人使用AT命令?

我不是那些“嵌入式系統中的人”之一,但我想說 AT 命令仍在使用中,因為它們來自於定義明確的低開銷標準,線路信令。

這意味著您可以將同一通信通道用於信令(用於管理通信的AT命令)和數據(您要發送的實際數據)。 AT 標準指定瞭如何區分兩者,以便您和串行設備彼此交談時不會感到困惑。

“ AT”是什麼意思?

AT 用於注意

為什麼人們總是說這是一個標準?

好吧,因為它是。我想說這實際上是事實上的標準化“真實” 標準一對的結合以及一些建議

這似乎沒說什麼,這是幾年前其他答案中沒有提到的。如果您要解決一個老問題,那實際上應該是說一些以前沒有說過的重要事情。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...