ATコマンドセットを使用する理由


15

率直に言って、BluetoothやWIFI、GSMなどのすべての通信IC(または少なくともそれらの多く、または最も有名または人気のある)がATコマンドセットをサポートするのはなぜですか?通信用のD / C(データまたはコマンド)用のシンプルなピンがないのはなぜですか?ATコマンドセットを使用する利点は何ですか?

ATコマンドセットは大きく、時間とメモリスペースがかかり、通信が難しくなりますが、代わりに単純なD / Cピンを使用して整数を送信してレジスタを設定したり、データを送信したりできます。


18
一言:レガシー...それらはすべてHayes互換モデムのふりをしており、since明期から(または少なくとも80年代以降、ほぼ同じことです)存在しています。そして、それは本当に正当な理由ではありません。
ブランス

4
レガシーだけでなく、本当に良いアイデアです。昔のことわざにあるように、「標準の素晴らしいところは、選択できるものが非常に多いことです」。ハードウェアとソフトウェアが、以前使用していた言語とは異なる言語(コマンドセット)を話すかどうかを心配せずに、使用しているどのような通信モジュールでも動作するようにします。
ドウェインリード

7
必須のXKCDはこちら
ビットスマック

1
理論的には、WIFIモジュールを取り外して、別のベンダーのモジュールと交換することができます。また、プロトコルは同じであるため、コードを調整する必要さえありません。
ポール

1
通信/ビットに何らかの問題がある場合、正しい応答が得られません。つまり、「OK」です。したがって、それを適切に処理すれば、かなり安定しています。メッセージは何らかの意味で意味があるため、デバッグは非常に簡単です。ただし、処理は実際には実装が少し難しくなります。上記のメッセージを確認する必要があります。そして、MCUに通常ではない方法でそれらを読みます。ただし、一度これを行うと、他のATデバイスでも機能します。
ポール

回答:


27

brhansは正しい-レガシー。

1980年代、ヘイズは「スマートモデム1200」の製造を開始しました。それはほとんどすぐに時代遅れになり、ヘイズはSmartmodem 2400を急いで駆け出しました。その結果、ヘイズは、同じプログラミングコマンドを受け入れる2つの異なる速度のモデムを初めて作成しました。Smartmodem 1200に電話番号をダイヤルさせるソフトウェアは、Smartmodem 2400にもダイヤルできます。

当時、すべての新しいモデムは、更新されたドライバーを作成するのに何ヶ月も必要でした。Smartmodem 2400が市場に登場したとき、Smartmodem 1200の動作するドライバーが既にあったため、何ヶ月も待つ必要はありませんでした。突然、他のメーカーは、古いモデムと同じコマンドセットを持つ新しいモデムの利点に気付きました。6か月以内に、ベンダーは唯一の選択肢として「Hayes互換」モデムを提供していました。Hayesに訴えられました。そのため、誰もがモデムを「ATコマンドセット互換」と呼び始めましたが、ヘイズコマンドセットは引き続き使用していました。

80年代半ばまでに、ATコマンドセットを使用できないコンシューマモデムは作成されませんでした。その結果、通信システムのようなすべてのモデムはATコマンドを使用します。他にも利点があります-コマンドセットがASCIIなので、誰でも手動でATコマンドをターミナルウィンドウに入力してモデムを制御できます。私のモデムには危険なRJ11接続があったため、Procomm Plusのすべてのセッションを次のように開始していました。

AT
OK
ATH1
[dial tone]
ATDT [phone number]

ダイヤルトーンが聞こえることを確認するだけです。そうしなかった場合、私は周りを回ってワイヤーを少し動かします!


1
デバッグ性の良い点。純粋なバイナリプロトコル(LCDスクリーンデータストリームなど)では、デバイスとの通信を開始するためにハードウェア/ファームウェアを設計する必要があります。ATコマンドセットを使用すると、ハードウェアなしでデバイスをテストできます。必要なのは、シリアルポート(または最近のUSBシリアルコンバーター)とターミナルエミュレーターだけです。
スリーブマン

1
1つの小さな口論... Winmodemsは、ATコマンドとアプリケーションレベルの互換性を保持しましたが、OSレベルの互換性を完全に破りました。Pre-Winmodem、内蔵モデムでさえ、Linuxで動作がよく知られており、透過的にサポートされている沼地標準16550A UARTを介してインターフェースされます(OSに対する通常のISAまたはPCIシリアルポートのように見えたため)。Winmodemsは、高レベルのロジック(Lucent)または文字通りすべて(HSP)をドライバーに移動することにより、それにモンキーレンチを投げました。WinmodemのATコマンドホストは仮想であったため、Linuxでは文字通り文鎮でした。
-Bitbang3r

1
うん、私は電話回線にパルスダイヤルを使用しているため、手動で入力することもありました(ただし、すべての通信アプリはすべてのユーザーがタッチトーンを使用していると想定しています)。:-)
ブライアンノブラウフ

@slebetman:デバイスがバイナリまたはテキストベースのプロトコルをサポートするオプションを持っているのが好きですが、「AT」コマンドは別の問題です。自動ボー検出のないシステムでは、コマンドプレフィックスとして「AT」に特別な利点はありません。また、コマンドの先頭に「AT」を付けるが、原則外の文字を送受信する機能を必要とする多くのシステムを見てきました。 ASCIIセットおよび共通制御コード。
スーパーキャット

1
IIRC、Linuxは最終的にいくつかのwinmodems用のドライバーを入手しました。ほとんどの場合、ほとんどの機能が低下したソフトモデムは電話回線に接続されたサウンドカードであるため、ALSAまたはOSSサウンドドライバーを使用します。IIRCには、データがUARTバッファにスタックしていないため、winmodemsから得られる小さなレイテンシの利点がありました。ゲーマーだけが世話をしました。他の誰もが、シングルコアCPUからのサイクルの浪費を嫌っていました。
ピーターコーデス

20

あなたは、コマンドセットの欠点についてのみ話している。利点を考慮してください:

  1. ATコマンドセットを使用すると、OSのPPP実装を介して通信デバイスを任意のIPネットワークにすぐに配置できます。別の方法としては、カスタムプロトコルインターフェイスの設計に加えて、サポートするすべてのOSがデバイスを使用してインターネットに参加する前に、そのOSごとに独自のネットワークデバイスドライバーを作成する必要があります。

  2. 有能なエンジニアなら誰でもこのプロトコルをすでに知っているでしょう。日常業務で何十もの非標準シリアルプロトコルを理解して実装する必要がある人から、それを入手してください。よく設計された一般的なプロトコルの方が優れています。

  3. ATプロトコルはかなり複雑であり、タスク固有の専用プロトコルよりも実装に多くのメモリを必要とするのは事実ですが、このプロトコルを実装することを選択した人は、多くの時間をかけて再発明することを避けることもできます完全に良いホイール。彼は何十年ものデザインの専門知識を引き出しています。彼は、開発時間をコミットする前に機能することを知っています。優れたプロトコル設計は驚くほど困難です。

    (これらの日のうちの1つ、よりひどい半考慮された1回限りのプロトコルの実行を防ぐことを期待して、私はマグナムの作品「Your Protocol Sucks」を公開するつもりです。)


1
私は感情に同意しますが、「よく設計された」?3つの単語:ATSコマンド...
CVn

いわゆる「AT」コマンドを使用することを私が見たデバイスの大半は、最初の2文字を除いて、コマンドセット間で共通点はありません。WiFiモジュールが192.168.254.5でポート1234へのTCP接続を開くコマンドとして「ATDT192,168,254,5W1234」を受け入れることができる場合、モデムがモジュールを使用できることを期待するソフ​​トウェアは問題なく使用できますが、そのようなもの。
スーパーキャット

@supercat:これは、関連する標準(IEEE802シリーズ)およびMACアドレスの使用からわかるように、WiFiモデムがイーサネットカードに似ているためです。そして、質問は「通信IC」について語っていますが、クーモンイーサネットICはATコマンドセットを使用するとは思いません。
–MSalters

@MSalters:多くのシナリオでは、WiFiモジュールの主な使用法は、一度に1つのTCP接続を確立することです。Hayesエミュレーションはそのために美しく機能します。上記のような「ダイヤル」番号を使用することで、DOSベースのターミナルプログラムをtelnetクライアントとして使用できるFOSSILドライバーを見てきましたが、WiFiモジュールでも同じアプローチがうまく機能すると思います。いずれにせよ、私のポイントは...製品は、TCP接続を確立するために、上記のような文字列を使用した場合、このような使用は重要な互換性/親しみの利点を持っているということですが、
supercat

...最近「AT」で始まるコマンドを使用するデバイスの大部分は、単に作成者が「AT」ですべてのコマンドを開始する他の多くのデバイスを見て、他のデバイスがなぜそうするのか考えもせずにそうするだけだと思うそう。
スーパーキャット

14

質問の反対側で展開します...インターフェースに別の信号線を追加するだけではどうですか?

これは、本物の25ピンRS232インターフェースの信号線のすべての組み合わせを経験していない人にしか尋ねられません。TXD、RXD、Gndに加えて、RTS / CTS(送信準備完了、送信準備完了)DSR / DTR(データセット準備完了、データ端末準備完了)およびハードウェアハングアップピンの信号のペアが既にいくつかありました。その他。また、メーカー間で明確な普遍的な合意はありません。何が機能したのか、そもそも2組のハードウェアハンドシェイク信号が必要なのはなぜですか。そしてその上にソフトウェアXON / XOFFプロトコル)(そして、Diabloプリンターがピン11でのハンドシェークで-私が知っている限りでは-どうしてと主張したのですか?)

一部の機器には完全なインターフェースが必要でした。TXD / RXD / Gndに満足している人もいました。ピン4と6を短絡させることで、だまされることもあります(したがって、独自のRTSをCTSにループバックします)。また、DCEであるはずの一部はDTEまたはその逆であり、接続の各ペアが交換された「ヌルモデム」ケーブルを介してのみ他のものと通信します。

その後、これらすべてを簡素化するために、IBM PCはRS232用の新しい9ピンインターフェイスを導入しました。既存のすべてのケーブルのコレクションが廃止されたことを意味するため、最初からやり直す必要がありました...

これらはすべて、両端が異なるボーレートに設定されている可能性があることを考慮しなくても、人生を困難にしました...

これにより、RS232ブレイクアウトボックス、ケーブル、テスト/デバッグツールを中心に構築された業界全体がサポートされました。

このコンテキストで別の信号を追加しても、おそらく飛行しませんでした...


9

:コマンドは、複数のボー・レートをサポートするのに必要なので、そのコマンドの接頭辞の最初の文字として「A」を選んだ、とのようなラインルックスの「A」、「AT」使用への最初のヘイズモデム-------_-_____-x----------との比1:5を有しています最長および最短の「低」時間(「x」はパリティ設定に応じて高または低になる場合があります)。1200ボーより遅いレートは833us以下の「短い」時間を管理できません。また、2400より速いレートは4.16ms以上の「長い」時間を管理できないため、モデムは見た目を安全に想定できます1200ボーの "A"のように(および同様に300ボーなどで)。「T」は「A」と反対のパリティを持っているため、2番目の文字が「T」のように見える場合、

Hayesモデムコマンドと同様に、または類似して機能する「AT」コマンドを使用するデバイスまたはドライバー(たとえばATDTW192,168,254,123W4567、192.168.254.123のポート4567に接続するコマンドとして受け入れる)は、古いスタイルと通信することを期待するソフ​​トウェアとの互換性のために行います。モデムまたは互換性のあるデバイス。ただし、デバイスは自動ボーレート検出に対応しておらず、コマンドとは異なり、「ATコマンドセット」は有用なマーケティングの流行語であるという理論に基づいて、「AT」で始まるコマンドを使用するデバイスが多数あります。他のデバイス上のすべて。このようなコンテキストでコマンドプレフィックスとして「AT」を使用しても、互換性の値は追加されず、有用な目的はありません。デザイナーは他のデザイナーがそれを見ているのでそれをします、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.