Mengapa orang menggunakan perintah AT dalam komunikasi serial?

21

Saya perlu tahu mengapa orang di sistem embedded menggunakan perintah AT?
Ketika saya bertanya, orang bilang itu standar.

Jadi pertanyaan saya adalah: Apa artinya "AT"? Mengapa orang terus mengatakan itu standar?

xsari3x
sumber
1
+++ ATH0 siapa saja?
kinokijuf
@kinokijuf apa maksudmu?
xsari3x
1
why people in embedded systems use AT commands- tidak ada yang tersemat-spesifik tentang pertanyaan Anda atau penggunaan AT pada tautan serial. Bisa jadi Anda telah melihat ini pada sistem yang disematkan, tetapi asalnya dijelaskan di bawah dan tidak khusus untuk sistem yang disematkan. (Berhati-hatilah untuk tidak melukis sesuatu dengan kuas yang terlalu lebar.)
Radian
1
Perintah AT bahkan diimplementasikan dalam sesuatu yang disebut modemu: program Unix yang menciptakan perangkat pseudo-tty master / slave, dan mensimulasikan modem yang benar-benar melewati telnet. Anda "memanggil" host dengan ATD<hostname>. Yang lucu adalah bahwa program keluar hampir tepat pada saat saya membutuhkannya, sekitar tahun 1996: versi 0.0.1. Saya tidak membutuhkannya sejak itu. Dan itu masih 0.0.1! Saya menggunakannya bersamaan dengan minicom untuk melakukan transfer zmodem melalui telnet ke host jarak jauh yang hanya bisa dijangkau dengan cara itu.
Kaz
@kinokijuf Tolong jangan berikan itu dalam komentar. Anda baru saja membuat StackOverflow menutup telepon saya! :-)
Curt J. Sampson

Jawaban:

31

Satu detail yang jarang dihargai tentang perintah "AT" adalah bahwa banyak modem akan mulai dalam mode "auto-baud / auto-parity". Awalnya, modem akan memulai tidak mencoba untuk benar-benar memecahkan kode data serial, tetapi hanya akan menonton untuk pulsa rendah berturut-turut dan pulsa tinggi yang lebarnya cocok dengan periode bit yang valid yang sama (misalnya 3,333ms untuk 300 baud, 833us untuk 1200 baud, dll .). Setelah menemukan itu, mereka akan melihat apakah pulsa rendah berikutnya adalah lima kali lebar itu. Jika demikian, mereka akan menonton untuk yang tinggi-rendah-tinggi atau yang lain untuk setidaknya 1,5 kali tinggi. Menemukan salah satu dari itu akan menunjukkan bahwa modem baru saja melihat 0x41 atau 0xC1 (yaitu "A") dari baud rate yang diidentifikasi. Lebih lanjut akan menunjukkan apakah komputer yang terpasang menggunakan 8-N-1 atau 7-E-1, atau bahwa ia menggunakan 7-N-1 atau 7-O-1. Dalam kedua kasus, itu akan mencari karakter berikutnya menjadi 0x54 atau 0xD4 (yaitu "T"). Itu akan memungkinkan modem untuk lebih lanjut mengkategorikan panjang karakter dan pengaturan paritas.

Perhatikan bahwa semua yang diterima sebelum "AT" akan diabaikan. Jika gema dinyalakan, data akan digemakan kembali ke komputer yang terpasang hanya dengan mencerminkan semua transisi garis tanpa ada decoding serial. Jika komputer mengirim data sebelum "AT" pada misalnya 247 baud, itu akan digaungkan kembali dengan kecepatan itu.

Saat ini, beberapa perangkat menggunakan "A" awal untuk deteksi laju otomatis, tetapi sebaliknya fakta bahwa perintah dimulai dengan "AT" pada dasarnya merupakan keingintahuan historis.

supercat
sumber
1
ehm ... apa maksudmu "7-N-1" ??
xsari3x
1
Tujuh bit data, tanpa paritas, one stop bit. Mengizinkan data dikirim 11% lebih cepat dari 8-N-1, jika seseorang tidak akan mengirim data apa pun dengan set bit tinggi.
supercat
Kecuali bahwa bauding otomatis (dan sedang) biasanya dilakukan pada bagian +++ dari +++ AT atau +++ <guard time> AT command. Lihat en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
david
1
@david: Saya tidak melihat penyebutan otomatis di artikel urutan waktu lepas yang independen, saya juga tidak pernah melihat modem menerima +++ dengan kecepatan baud apa pun selain yang digunakan untuk komunikasi. Karakter 0x9E 0x86 dikirim kembali ke 2400-8-N-1 (atau ^ N ^ F pada 2400-7-O-1) akan menghasilkan transisi garis yang sama persis dengan karakter "+" pada 1200 baud, jadi saya akan menganggap "+" sebagai pilihan aneh untuk karakter baud-training.
supercat
Referensi Wikipedia (!) Hanya untuk orang-orang yang tidak tahu tentang +++. Perangkat keras Saya menggunakan kereta di 'U', kereta perangkat lunak di string khusus. Apakah Anda tahu standar? Semua string koneksi digunakan untuk memulai +++, jadi bauding otomatis selesai sebelum komunikasi lainnya.
david
22

Ini mengacu pada set perintah Hayes yang telah menjadi standar untuk waktu yang lama untuk mengeluarkan perintah ke modem (dan peralatan lainnya) melalui saluran serial.

Alih-alih perintah dan data yang memiliki dua baris terpisah, hanya satu baris yang digunakan dan untuk beralih ke mode perintah dari data urutan tertentu dikirim, misalnya +++ diikuti dengan jeda panjang yang ditetapkan. Kemudian data selanjutnya dilihat sebagai perintah oleh peralatan penerima.
Alasan untuk menggunakan sesuatu seperti ini adalah kenyataan bahwa ia menghindari perlunya sepasang garis lain, yang dalam banyak kasus sama sekali tidak tersedia, terutama dalam sistem tertanam kecil.

Lihat halaman Wiki dan tautan di bagian bawah - ada banyak detail di sana.

Ada semua jenis ekstensi untuk AT asli yang ditetapkan, jadi saya tidak akan mengandalkan semua yang menyebutkan AT untuk benar-benar menggunakan semua perintah Hayes asli. Misalnya saya punya chip serial bluetooth di sini yang IIRC menggunakan itu sendiri AT set jenis.
Saya bukan ahli dalam hal itu, saya hanya ingat kembali dengan perintah di masa lalu dial up dan BBS.

Oli Glaser
sumber
13

Set perintah "AT" adalah untuk memecahkan masalah yang diperlukan dari informasi kontrol band melalui saluran byte-stream yang sama data sewenang-wenang dikirim. Ini adalah masalah umum modem, ketika mereka kotak eksternal yang terhubung ke komputer melalui kabel serial.

Hayes adalah produsen modem semacam itu, dan memperoleh banyak popularitas awal. Solusi mereka untuk masalah out-band adalah mengirim modem sebagian besar dua huruf perintah kontrol ASCII dengan urutan khusus untuk memasukkannya ke dalam data pass melalui mode. Untuk mengurangi kemungkinan hal-hal acak yang tampak seperti perintah, urutan perintah mereka semua dimulai dengan perintah AT, yang berarti "perhatian".

Hayes memperoleh begitu banyak pangsa pasar sehingga produsen modem lain harus mengimplementasikan set perintah yang sama agar kompatibel. Dengan cara itu pelanggan dapat menggunakan modem mereka tanpa harus menulis ulang perangkat lunak, yang sudah diatur untuk menggerakkan modem Hayes.

Saat ini, skema ini jarang digunakan tetapi tentu saja sesuatu yang begitu meresap bertahan di sudut-sudut gelap bahkan hari ini.

Olin Lathrop
sumber
1
Saya menyukai catatan sejarah tentang Hayes & bagaimana ini memaksakan standarnya sendiri, menggabungkan jawaban Anda dengan dua jawaban di atas sudah lebih dari cukup :)
xsari3x
Secara kebetulan, banyak modem yang lebih baru tampaknya tidak lagi mengharuskan karakter "AT" menjadi huruf besar, yang meningkatkan frekuensi putusnya sambungan di tengah pengiriman file teks akan menyebabkan perilaku modem yang salah.
supercat
Kode kontrol Band-Break adalah +++ AT atau +++ <guard time>. AT adalah dua karakter pertama dari set kontrol standar, dan merupakan singkatan dari ATtention.
david
0

mengapa orang di sistem embedded menggunakan perintah AT?

Saya bukan salah satu dari "orang dalam embedded system" tetapi saya akan mengatakan bahwa ATperintah masih digunakan karena mereka berasal dari standar overhead rendah yang didefinisikan dengan baik untuk pensinyalan in-line.

Artinya adalah bahwa Anda dapat menggunakan saluran komunikasi yang sama baik untuk pensinyalan (perintah AT untuk mengelola komunikasi) dan data (data aktual yang ingin Anda kirim). The ATmenspesifikasikan standar bagaimana membedakan antara dua sehingga Anda dan perangkat serial Anda tidak bingung ketika berbicara satu sama lain.

Apa artinya "AT"?

ATadalah untuk Perhatian

Mengapa orang terus mengatakan itu standar?

Yah, karena memang begitu. Aku akan mengatakan itu sebenarnya adalah campuran de-facto standarisasi dan beberapa dari "nyata" standar dan beberapa rekomendasi .

Luke404
sumber
Ini sepertinya tidak mengatakan apa pun yang belum dikatakan dalam jawaban lain bertahun-tahun yang lalu. Jika Anda akan mengeruk pertanyaan lama, itu benar-benar harus mengatakan sesuatu yang penting yang belum pernah dikatakan sebelumnya.
Chris Stratton