なぜ人々はシリアル通信でATコマンドを使用するのですか?


21

組み込みシステムの人々がATコマンドを使用する理由を知る必要がありますか?
私が尋ねたとき、人々はそれが標準だと言う。

だから私の質問は:「AT」とはどういう意味ですか?なぜ人々はそれが標準だと言い続けるのですか?


1
+++ ATH0誰か?
-kinokijuf

@kinokijufどういう意味ですか?
xsari3x

1
why people in embedded systems use AT commands-質問やシリアルリンクでのATの使用について、特定の埋め込み情報はありません。組み込みシステムでこれを見たことがあるかもしれませんが、その起源は以下で説明されており、組み込みシステムに固有のものではありません。(ブラシを塗りすぎないように注意してください。)
ラジアン

1
ATコマンドはmodemu、マスター/スレーブ疑似ttyデバイスを作成し、実際にtelnetを経由するモデムをシミュレートするUnixプログラムと呼ばれるものにも実装されました。でホストを「ダイヤル」しますATD<hostname>。おもしろいことに、プログラムは私がそれを必要としていたときにほぼ正確に、1996年頃にリリースされました:バージョン0.0.1。それ以来、私はそれを必要としませんでした。そして、それはまだ0.0.1です!minicomと組み合わせて使用​​し、telnetを介してリモートホストへのzmodem転送を行いましたが、この方法でしか到達できませんでした。
カズ

@kinokijufコメントに入れないでください。StackOverflowがハングアップしただけです!:-)
カートJ.サンプソン

回答:


31

「AT」コマンドについてほとんど評価されていない詳細の1つは、多くのモデムが「自動ボー/自動パリティ」モードで起動することです。最初は、モデムはシリアルデータを実際にデコードしようとせずに開始しますが、幅が同じ有効ビット周期に一致する連続する低パルスと高パルスを監視します(たとえば、300ボーで3.333ms、1200ボーで833usなど) 。)。それを見つけると、次の低パルスがその幅の5倍かどうかを確認します。もしそうなら、彼らは別の高低高または少なくとも1.5ビット時間の高さを監視します。これらのいずれかを見つけることは、モデムが識別されたボーレートの0x41または0xC1(つまり「A」)を検出したことを示します。さらに、接続されたコンピューターが8-N-1または7-E-1を使用していたか、7-N-1または7-O-1を使用していたことを示します。いずれの場合でも、次の文字が0x54または0xD4(つまり「T」)になるように検索します。これにより、モデムは文字の長さとパリティ設定をさらに分類できます。

「AT」の前に受け取ったものはすべて無視されることに注意してください。エコーがオンになっている場合、シリアルデコードなしですべてのライン遷移をミラーリングするだけで、データは接続されたコンピューターにエコーバックされます。コンピュータが「AT」の前にたとえば247ボーでデータを送信した場合、その速度でエコーバックされます。

現在、いくつかのデバイスは自動ボーレート検出に最初の「A」を使用していますが、そうでない場合、コマンドが「AT」で始まるという事実は基本的に歴史的な好奇心です。


1
ええと…「7-N-1」とはどういう意味ですか?
xsari3x

1
7データビット、パリティなし、1ストップビット。上位ビットが設定されたデータを送信しない場合、8-N-1よりも11%高速でデータを送信できます。
-supercat

オートボーディングは、通常、+++ ATまたは+++ <guard time> ATコマンドの+++部分で行われた(現在行われている)ことを除きます。参照en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
デヴィッド

1
@david:時間に依存しないエスケープシーケンスの記事には自動ボーディングに関する記述はなく、通信に使用しているボーレート以外のボーレートで+++を受け入れるモデムを見たこともありません。2400-8-N-1で連続して送信された0x9E 0x86(または2400-7-O-1で^ N ^ F)の文字は、1200ボーの「+」文字とまったく同じ行遷移を生成します。そのため、「+」をボートレーニングキャラクターの奇妙な選択肢と見なします。
supercat

Wikipedia(!)の参照は、+++を知らない人のためのものでした。ハードウェアは「U」でトレインを使用し、ソフトウェアはカスタムストリングでトレインします。標準を知っていますか?すべての接続文字列は+++の起動に使用されたため、他の通信の前に自動ボーディングが完了しました。
デビッド

22

これは、シリアル回線を介してモデム(およびその他の機器)にコマンドを発行するための長い間標準であったHayesコマンドセットを指します。

2つの独立した行を持つコマンドとデータの代わりに、1行のみが使用され、データからコマンドモードに切り替えるために、特定のシーケンスが送信されます。その後、次のデータは受信機器によってコマンドとして認識されます。
このようなものを使用する理由は、特に小さな組み込みシステムでは、多くの場合、単純に利用できない別のラインのペアの必要性を回避するという事実です。

Wikiページと下部のリンクをご覧ください-詳細がたくさんあります。

ただし、元のATセットにはあらゆる種類の拡張機能があります。そのため、ATについて言及しているすべての情報に基づいて、実際にすべての元のHayesコマンドを使用することはしません。たとえば、ここには、IIRCが独自のATタイプセットを使用するBluetoothシリアルチップがあります。
私はそれについての専門家ではありませんが、昔のダイヤルアップや掲示板でコマンドを使ってハックしたことを覚えています。


13

「AT」コマンドセットは、任意のデータが送信された同じバイトストリームチャネルで帯域外制御情報を必要とする問題を解決するためのものでした。これは、モデムがシリアルケーブルを介してコンピュータに接続された外部ボックスであったときの、モデムの一般的な問題でした。

Hayesはそのようなモデムのメーカーであり、多くの初期の人気を得ました。帯域外の問題に対する彼らの解決策は、ほとんど2文字のASCII制御コマンドをモデムに送信して、データパススルーモードにする特別なシーケンスを送信することでした。コマンドのように見えるランダムなものの可能性を減らすために、それらのコマンドシーケンスはすべてATコマンドで始まりました。これは「注意」の略です。

Hayesは非常に多くの市場シェアを獲得したため、他のモデムメーカーは互換性を保つために同じコマンドセットを実装する必要がありました。そうすれば、顧客はすでにHayesモデムを駆動するように設定されているソフトウェアを書き直すことなく、モデムを使用できます。

今日では、このスキームはめったに使用されませんが、もちろん、今日でも暗いコーナーに広まっているものがあります。


1
私はヘイズについてのこの歴史的なメモが好きで、それが独自の標準を強制し、上記の2つの答えとあなたの答えを連結するだけで十分です:)
xsari3x

ちなみに、多くの新しいモデムでは、文字 "AT"を大文字にする必要がなくなったようです。これにより、テキストファイルの送信中に切断されるとモデムの動作がおかしくなります。
-supercat

Band-Break制御コードは+++ ATまたは+++ <guard time>です。ATは標準コントロールセットの最初の2文字で、ATtentionの略です。
デビッド


0

組み込みシステムの人々がATコマンドを使用する理由

私はそれらの「組み込みシステムの人々」の一人ではありませんが、ATインラインシグナリング用の明確に定義された低オーバーヘッドの標準に基づいているため、コマンドはまだ使用されていると思います。

つまり、シグナリング(通信を管理するATコマンド)とデータ(送信する実際のデータ)の両方に同じ通信チャネルを使用できるということです。このAT規格では、2人を区別する方法が規定されているため、ユーザーとシリアルデバイスが互いに会話する際に混乱することはありません。

「AT」とはどういう意味ですか?

AT注意のためです

なぜ人々はそれが標準だと言い続けるのですか?

まあ、そうだから。実際には、事実上の標準化、いくつか「実際の」 標準およびいくつかの推奨事項が混在していると思います。


これは、数年前に他の回答でまだ言われていないことは何も言っていないようです。あなたが古い質問をdrするつもりなら、それは本当に言われていない重要なことを言うことです。
クリスストラットン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.