Neden AT komut seti?


15

Açıkçası, Bluetooth veya WIFI veya GSM vb.Gibi tüm iletişim IC'leri (veya en azından çoğu veya en ünlü veya popüler) neden AT komut setini destekliyor? neden iletişim için D / C (Veri veya Komut) için basit bir pinleri yok? AT komut setini kullanmanın faydaları nelerdir?

AT komut seti büyüktür ve zaman ve bellek alanı gerektirir ve bunun yerine basit bir D / C pinini kullanabilir ve kayıtları ayarlamak veya veri göndermek için bir tam sayı gönderebilirsiniz.


18
Tek kelime: Eski ... Hepsi Hayes uyumlu modemler gibi davranıyor ve zamanın başlangıcından beri (ya da en azından 80'lerden beri, aynı şey). Ve hayır, bu gerçekten iyi bir neden değil.
brhans

4
Sadece miras değil, aynı zamanda gerçekten iyi bir fikir. Eski deyim şöyle gider: "Standartlarla ilgili en harika şey, aralarından seçim yapabileceğiniz çok şey olmasıdır". Donanımımın ve yazılımımın daha önce kullandığım dilden farklı bir dil (komut seti) konuşup konuşmadığından endişe etmeden kullandığım iletişim modülüyle çalışmasını istiyorum .
Dwayne Reid

7
Zorunlu XKCD burada .
bitsmack

1
Teorik olarak, WIFI modülünüzü çıkarıp başka bir satıcıdan bir modülle değiştirebilirsiniz. Protokol aynı olduğundan, kodu ayarlamanız bile gerekmez.
Paul

1
Eğer iletişim / bitler ile ilgili bir sorun varsa, doğru yanıtı alamazsınız: "Tamam" Eğer buna göre ele alırsanız, oldukça kararlıdır. Mesajlar bir şekilde mantıklı olduğu için hata ayıklamak oldukça kolaydır. Bununla birlikte, kullanımı gerçekten biraz daha zordur. Söz konusu mesajları kontrol etmelisiniz. Ve onları bir MCU için normal olmayan bir şekilde okuyun. Ama sonra tekrar, bunu bir kez yaparsanız, diğer AT cihazları için çalışacaktır.
Paul

Yanıtlar:


27

brhans doğrudur - Eski.

1980'lerde Hayes "Smartmodem 1200" yapımına başladı. Neredeyse eskimişti ve Hayes Smartmodem 2400'ü fırlattı. Bu acele içinde, modem tasarımları arasında tasarım değişiklikleri için zaman yoktu. Sonuç olarak, Hayes aynı programlama komutlarını kabul eden iki farklı hız modemini yapan ilk kişi oldu! Bir Smartmodem 1200'ün telefon numarasını çevirmesini sağlayabilecek herhangi bir yazılım da Smartmodem 2400'ü arayabilir.

O zaman, her yeni modem güncellenmiş bir sürücünün yazılması için aylar gerektiriyordu. Smartmodem 2400 piyasaya çıktığında, Smartmodem 1200 için çalışan bir sürücü zaten vardı, bu yüzden aylarca beklemek yok. Aniden diğer üreticiler eski modemlerle aynı komut setine sahip yeni modemlerin avantajını fark ettiler. Altı ay içinde, satıcılar tek seçenek olarak "Hayes uyumlu" modemler teklif ediyorlardı. Bu da Hayes tarafından dava edildi. Böylece herkes modemlerine "AT Komut Seti uyumlu" demeye başladı, ancak Hayes komut setini kullanmaya devam etti.

80'lerin ortalarında, AT komut setini kullanamayan tüketici modemleri yapılmadı. Sonuç olarak, comms sistemi gibi her modem AT komutlarını kullanır. Başka avantajları da var - komut seti ASCII olduğundan, bir modemi kontrol etmek için herkes terminal penceresine manuel olarak AT komutları yazabilir. Kendi modemimin bir dicey RJ11 bağlantısı olduğundan, Procomm Plus'taki her oturuma aşağıdakileri başlatırdım:

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

Çevir sesini aldığımdan emin olmak için. Yapmasaydım, etrafta dolaşıp telleri biraz kıpırdatardım!


1
Hata ayıklama için iyi bir nokta. Saf bir ikili protokol (LCD ekran veri akışı gibi), aygıtla konuşmaya başlamak için donanım / bellenim tasarlamanızı gerektirir. AT komut seti, cihazı sıfır donanım ile test etmenizi sağlar. Tek ihtiyacınız olan bir seri port (veya bu günlerde USB'den seriye dönüştürücü) ve bir terminal emülatörü.
slebetman

1
Bir küçük kelime oyunu ... Winmodems, AT komutlarıyla APPLICATION düzeyinde uyumluluğu korudu, ancak OS düzeyinde uyumluluğu tamamen kırdı. Winmodem öncesi, dahili modemler bile, çalışmaları Linux tarafından iyi bilinen ve şeffaf bir şekilde desteklenen bir bataklık standart 16550A UART ile arayüz oluşturdu (çünkü işletim sistemine normal ISA veya PCI seri portları gibi görünüyorlardı). Winmodemler, bir üst düzey mantığı (Lucent) veya kelimenin tam anlamıyla her şeyi (HSP) sürücüye taşıyarak bir İngiliz anahtarı attı . Winmodem'in AT komut dosyası sanal olduğundan, Linux altında tam anlamıyla kağıt ağırlıklarıydı.
Bitbang3r

1
Evet, darbeli arama telefon hattına sahip oldukları için onları elle de yazıyordum (ancak herkesin tonlu olduğu varsayılan tüm iletişim uygulamaları). :-)
Brian Knoblauch

@slebetman: Aygıtların ikili veya metin tabanlı protokolleri destekleme seçenekleri olduğunda hoşuma gider, ancak "AT" komutları ayrı bir sorundur. Otomatik baud algılaması olmayan sistemlerde, bir komut öneki olarak "AT" ye özel bir avantaj yoktur ve komutlara "AT" önekini ekleyen ancak yine de ilke dışında karakter gönderme ve alma yeteneği gerektiren bir dizi sistem gördüm ASCII seti ve ortak kontrol kodları.
supercat

1
IIRC, Linux sonunda bazı winmodemler için sürücüler aldı. Çoğu durumda, ALSA veya OSS ses sürücüleri aracılığıyla, en soyulmuş yazılım modelleri aslında telefon hatlarına bağlı ses kartlarıydı. IIRC'de, winmodemlerden elde edilecek küçük gecikme avantajları vardı, çünkü verileriniz UART tamponlarına yapışmadı. Sadece oyuncular önemsedi. Diğer herkes, tek çekirdekli işlemcilerinden döngü israfından nefret ediyordu.
Peter Cordes

20

Sadece komut setinin dezavantajlarından bahsediyorsunuz. Yukarı tarafları düşünün:

  1. AT komut setini kullanarak iletişim cihazınız, işletim sisteminin PPP uygulaması aracılığıyla herhangi bir IP ağına hemen konabilir . Alternatif olarak, özel bir protokol arabirimi tasarlamanın yanı sıra, bu işletim sisteminin cihazınızı İnternet'e katılmak için kullanmadan önce desteklemek istediğiniz her işletim sistemi için kendi ağ aygıt sürücünüzü yazmanız gerekir.

  2. Herhangi bir yetkili mühendis bu protokolü zaten bilecektir. Gündüz işi düzinelerce standart dışı seri protokolü anlamasını ve uygulamasını gerektiren birinden alın: iyi tasarlanmış bir ortak protokol daha iyidir.

  3. AT protokolünün oldukça karmaşık olduğu ve göreve özgü bir amaca yönelik protokolden daha fazla bellek aldığı doğru olsa da, bu protokolü uygulamayı seçen bir kişinin, mükemmel bir tekerlek. On yıllarca tasarım uzmanlığı var. Geliştirme zamanına başlamadan önce işe yarayacağını biliyor. İyi protokol tasarımı şaşırtıcı derecede zordur.

    (Bu günlerden birinde, daha korkunç yarı sayılan tek seferlik protokollerin uygulanmasını engelleme umuduyla magnum opus'um "Protokolü Berbat" ı yayınlayacağım.)


1
Ben bu düşünceye katılırken; "iyi tasarlanmış"? Üç kelime: ATSkomut ...
15'te CVn

"AT" adı verilen komutların kullanımının ilk iki karakter dışında komut kümeleri arasında ortak hiçbir noktası olmadığını gördüm . Bir WiFi modülü "ATDT192,168,254,5W1234" kodunu 192.168.254.5'te 1234 numaralı bağlantı noktasına bir TCP bağlantısı açma komutu olarak kabul edebilirse, modemi bekleyen yazılım modülü iyi kullanabilir, ancak henüz bir tanesini görmedim böyle bir şey.
supercat

@supercat: Bunun nedeni, bir WiFi modemin ilgili standartlardan (IEEE802 serisi) ve MAC adreslerinin kullanımından görülebileceği gibi bir Ethernet kartına daha yakın olmasıdır. Ve soru "iletişim IC'leri" hakkında konuşurken, coomon Ethernet IC'lerinin AT komut setini kullandığını düşünmüyorum.
MSalters

@MSalters: Birçok senaryoda, bir WiFi modülünün birincil kullanımı bir seferde bir TCP bağlantısı kurmak olacaktır; Hayes öykünmesi bunun için güzel çalışabilir. DOS tabanlı terminal programlarının bir telnet istemcisi olarak kullanılmasına izin verecek bir FOSSIL sürücüsü gördüm, yukarıdaki gibi "numaralar" çevirerek ve aynı yaklaşımın WiFi modülleriyle güzel çalışacağını düşünürdüm. Her halükarda, bir ürün TCP bağlantısı kurmak için yukarıdaki gibi bir dize kullandıysa, bu tür kullanımın önemli uyumluluk / aşinalık faydalarına sahip olacağı, ancak ...
supercat

... Bu günlerde "AT" ile başlayan komutları kullanan cihazların çoğunun bunu yaptıklarından şüpheliyim çünkü yaratıcıları birçok komutun "AT" ile başladığını ve diğer cihazların neden yapacağı konusunda hiçbir fikre uymadığını gördüler. yani.
supercat

14

Sorunun diğer tarafında genişleyeceğim ... neden sadece arayüze başka bir sinyal hattı eklemiyoruz?

Bu sadece sinyal hatlarının tüm permütasyonlarını gerçek bir 25 pimli RS232 arayüzünde yaşamamış biri tarafından sorulabilir. TXD, RXD ve Gnd'ye ek olarak, zaten birkaç çift sinyal daha vardı: RTS / CTS (Göndermeye Hazır, Göndermeye Temizle) DSR / DTR (Veri Kümesine Hazır, Veri Terminali Hazır) ve bir donanım Askı Pimi. Ve diğerleri. Ve üreticiler arasında açık bir evrensel anlaşma tam olarak ne işlevi gördü - neden iki takım donanım el sıkışma sinyaline ihtiyacınız vardı? Ve bunun üzerine yazılım XON / XOFF protokolü) (Ve neden Diablo yazıcıları - bildiğim kadarıyla - pin 11'de el sıkışma konusunda ısrar etti?)

Bazı ekipmanlar tam bir arayüz gerektiriyordu. Bazıları TXD / RXD / Gnd'den memnun kaldı. Bazıları, pim 4 ve 6'yı kısaltarak işe yarayabilir (böylece kendi RTS'lerini CTS'ye geri döndürür). Ve DCE olması gereken bazıları DTE ya da tam tersi idi ve sadece bir "boş modem" kablosu aracılığıyla başka bir şeyle konuşacaktı.

Daha sonra tüm bunları basitleştirmek için IBM PC, RS232 için yeni bir 9 pinli arabirim tanıttı. Yani mevcut tüm kablo koleksiyonunuz eskiydi ve tekrar başlamak zorundaydınız ...

Her ikisi de farklı baud hızlarına ayarlanmış olabileceğini düşünmeden bile hayatı zorlaştırdı ...

Bu, RS232 koparma kutuları, kablolar ve test / hata ayıklama araçları etrafında inşa edilmiş tüm bir endüstriyi destekledi.

Bu bağlamda başka bir sinyal eklemek muhtemelen uçmayacaktı ...


9

"AT" komutlarını kullanan ilk Hayes modem, komut önekinin ilk karakteri olarak "A" yı seçti, çünkü çoklu baud hızlarını desteklemesi gerekiyordu ve hatta "A" şöyle görünüyor: -------_-_____-x----------arasında 5: 1 oranı var en uzun ve en kısa 'düşük' süreler ("x", eşlik ayarlarına bağlı olarak yüksek veya düşük olabilir). 1200 baud'dan daha düşük bir hız, 833us veya daha kısa bir "kısa" süreyi yönetemez ve 2400'den daha hızlı bir hız, 4.16ms veya daha uzun bir "uzun" süreyi yönetemez, böylece bir modem, görünen bir şey görürse, 1200 baud "A" gibi, (ve aynı şekilde 300 baud vb. ile). "T", "A" ile ters pariteye sahiptir, bu nedenle ikinci karakter "T" gibi görünüyorsa,

Hayes modem komutlarına benzer veya benzer şekilde çalışan "AT" komutlarını kullanan aygıtlar veya sürücüler (örneğin ATDTW192,168,254,123W4567, 192.168.254.123 numaralı bağlantı noktasının 4567 numaralı bağlantı noktasına bağlanma komutu olarak kabul etme ) bunu eski stille konuşmayı bekleyen yazılımlarla uyumluluk için yapar modem veya uyumlu bir cihaz. Ancak, cihazların otomatik baud hızı algılayamadığı ve aksine komutları bulunmadığı halde, "AT komut seti" nin kullanışlı bir pazarlama teriminde olduğu teorisinde "AT" ile başlayan komutları kullanan birçok cihaz vardır. başka herhangi bir cihazda. Bu tür bağlamlarda bir komut öneki olarak "AT" kullanımı hiçbir uyumluluk değeri eklemez ve yararlı bir amaca hizmet etmez; tasarımcılar bunu yapıyor çünkü diğer tasarımcıların yaptığını gördüler,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.