एटी कमांड क्यों?


15

सच कहूं, तो सभी संचार आईसी (या उनमें से कम से कम या सबसे प्रसिद्ध या लोकप्रिय) जैसे ब्लूटूथ या वाईफ़ाई या जीएसएम या आदि के लिए एटी कमांड सेट का समर्थन क्यों करते हैं? संचार के लिए उनके पास D / C (डेटा या कमांड) के लिए एक साधारण पिन क्यों नहीं है? AT कमांड सेट का उपयोग करने के क्या लाभ हैं?

एटी कमांड सेट बड़ा है और इसमें समय और मेमोरी स्पेस लगेगा और यह संचार करना मुश्किल बना देता है जबकि आप इसके बजाय एक साधारण डी / सी पिन का उपयोग कर सकते हैं और रजिस्टर सेट करने या डेटा भेजने के लिए एक पूर्णांक भेज सकते हैं।


18
एक शब्द: लिगेसी ... वे सभी हेस संगत मोडेम होने का नाटक कर रहे हैं और समय की सुबह से (या कम से कम 80 के दशक के बाद से, जो कि एक ही बात है)। और नहीं यह वास्तव में एक अच्छा कारण नहीं है।
ब्राह्मण

4
इतना ही नहीं विरासत है, लेकिन एक सच में अच्छा विचार। जैसा कि पुरानी कहावत है: "मानकों के बारे में अद्भुत बात यह है कि चुनने के लिए बहुत सारे हैं"। मैं चाहता हूं कि मेरा हार्डवेयर और सॉफ्टवेयर जो भी संचार मॉड्यूल मैं बिना किसी चिंता के उपयोग कर रहा हूं, उसके साथ काम कर सकता हूं, चाहे वह पहले की तुलना में एक अलग भाषा (कमांड सेट) बोलता हो।
ड्वेन रीड

7
यहां ओब्लिगेटरी एक्सकेसीडी ।
बिट्समैक

1
सिद्धांत रूप में, आप अपने वाईफ़ाई मॉड्यूल को अनप्लग कर सकते हैं और इसे दूसरे विक्रेता से बदल सकते हैं। और क्योंकि प्रोटोकॉल समान है, आपको कोड समायोजित करने की भी आवश्यकता नहीं है।
पॉल

1
यदि संचार / बिट्स के साथ कुछ गलत होगा, तो आपको सही प्रतिक्रिया नहीं मिलेगी अर्थात: "ठीक है" इसलिए यदि आप इसे तदनुसार संभालते हैं, तो यह काफी स्थिर है। यह डिबग करना काफी आसान है, क्योंकि संदेश किसी न किसी तरीके से समझ में आते हैं। हालांकि, हैंडलिंग वास्तव में लागू करने के लिए थोड़ा कठिन है। आपको उक्त संदेशों की जांच करनी होगी। और उन्हें बाहर पढ़ना, एक तरह से एमसीयू के लिए नियमित नहीं है। लेकिन फिर, यदि आप एक बार ऐसा करते हैं, तो यह अन्य एटी उपकरणों के लिए काम करेगा।
पॉल

जवाबों:


27

brhans सही है - विरासत।

1980 के दशक में हेस ने "स्मार्टमोडेम 1200" बनाना शुरू किया। यह लगभग तुरंत अप्रचलित था और हेस स्मार्टमोडेम 2400 से बाहर निकल गया। उस भीड़ में, मॉडेम डिजाइनों के बीच डिजाइन में बदलाव के लिए समय नहीं था। नतीजतन, हेस दो अलग-अलग गति मोडेम बनाने वाले पहले व्यक्ति थे जिन्होंने समान प्रोग्रामिंग कमांड स्वीकार किए! कोई भी सॉफ्टवेयर जो एक स्मार्टमोडेम 1200 प्राप्त कर सकता है एक टेलीफोन नंबर डायल करने के लिए भी एक स्मार्टमोडम 2400 डायल कर सकता है।

उस समय, अपडेट किए गए ड्राइवर के लिए प्रत्येक नए मॉडेम में महीनों की आवश्यकता होती है। जब स्मार्टमोडम 2400 बाजार में आया, तो स्मार्टमोडेम 1200 के लिए पहले से ही एक काम करने वाला ड्राइवर था, इसलिए महीनों का इंतजार नहीं किया गया। अचानक अन्य निर्माताओं को नए मॉडेम के लाभ का एहसास हुआ जो पुराने मॉडेम के समान कमांड सेट थे। छह महीनों के भीतर, विक्रेता एकमात्र विकल्प के रूप में "हेस संगत" मोडेम की पेशकश कर रहे थे। जिस पर उन्हें हेस ने मुकदमा कर दिया। इसलिए सभी ने अपने मॉडेम को "एटी कमांड सेट संगत" कहना शुरू कर दिया, लेकिन हेस कमांड सेट का उपयोग करना जारी रखा।

80 के दशक के मध्य तक कोई उपभोक्ता मोडेम नहीं बनाया गया था जो एटी कमांड सेट का उपयोग नहीं कर सकता था। परिणामस्वरूप प्रत्येक मॉडेम जैसे कोम सिस्टम एटी कमांड का उपयोग करता है। अन्य फायदे भी हैं - जैसा कि कमांड सेट ASCII है, कोई भी एक मॉडेम को नियंत्रित करने के लिए टर्मिनल विंडो में मैन्युअल रूप से एटी कमांड टाइप कर सकता है। चूँकि मेरे अपने मॉडेम में डेज़ी आरजे 11 कनेक्शन था, इसलिए मैं प्रोकॉम प्लस में हर सत्र शुरू करता था:

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

बस यह सुनिश्चित करने के लिए कि मुझे डायल टोन मिला है। अगर मैंने नहीं किया, तो मैं चारों ओर जाऊंगा और तारों को थोड़ा दबा दूंगा!


1
डिबगैबिलिटी पर अच्छी बात। एक शुद्ध बाइनरी प्रोटोकॉल (जैसे एलसीडी स्क्रीन डेटास्ट्रीम) के लिए आवश्यक है कि आप हार्डवेयर / फ़र्मवेयर डिज़ाइन करें ताकि डिवाइस से बात करना भी शुरू कर सकें। एटी कमांड सेट आपको शून्य हार्डवेयर के साथ डिवाइस का परीक्षण करने की अनुमति देता है। आपको केवल एक सीरियल पोर्ट (या इन दिनों एक यूएसबी से सीरियल कनवर्टर) और एक टर्मिनल एमुलेटर की आवश्यकता है।
स्लीपबेटमैन

1
एक छोटी सी वक्रोक्ति ... Winmodems ने AT आदेशों के साथ APPLICATION-स्तरीय संगतता को संरक्षित किया, लेकिन OS- स्तर की संगतता को पूरी तरह से तोड़ दिया। पूर्व-विनमोडम, यहां तक ​​कि आंतरिक मोडेम एक दलदल-मानक 16550A UART के माध्यम से हस्तक्षेप करते हैं जिनके कामकाज अच्छी तरह से ज्ञात और पारदर्शी रूप से लिनक्स द्वारा समर्थित हैं (क्योंकि वे ओएस की तरह सामान्य आईएसए या पीसीआई सीरियल पोर्ट की तरह दिखते थे)। Winmodems ने एक बंदर रिंच को उच्च-स्तरीय तर्क (ल्यूसेंट) या वस्तुतः सब कुछ (HSP) को चालक में ले जाकर फेंक दिया । चूंकि विनमोडेम का एटी कमांडहोस्ट आभासी था, वे लिनक्स के तहत शाब्दिक रूप से कागजी थे।
बिटबंग 3 आर

1
हां, मैं उन्हें मैन्युअल रूप से टाइप करने के लिए एक पल्स डायलिंग फोन लाइन होने के कारण भी इस्तेमाल करता था (लेकिन सभी कॉम ऐप जो मानते थे कि सभी के पास टच-टोन था)। :-)
ब्रायन नोब्लुक

@slebetman: मुझे यह पसंद है जब उपकरणों में द्विआधारी या पाठ-आधारित प्रोटोकॉल का समर्थन करने के विकल्प होते हैं, लेकिन "एटी" कमांड एक अलग मुद्दा है। ऑटो-बॉड पहचान के बिना सिस्टम में, "एटी" के लिए कमांड उपसर्ग के रूप में कोई विशेष लाभ नहीं है, और मैंने कई सिस्टम देखे हैं जो "एटी" के साथ उपसर्ग कमांड करते हैं, लेकिन फिर भी सिद्धांत के बाहर वर्ण भेजने और प्राप्त करने की क्षमता की आवश्यकता होती है। ASCII सेट और कॉमन कंट्रोल कोड।
सुपरकैट

1
IIRC, लिनक्स को अंततः कुछ वाइनमेड्स के लिए ड्राइवर मिले। कई मामलों में, एएलएसए या ओएसएस साउंड ड्राइवरों के माध्यम से, क्योंकि सबसे छीन-डाउन किए गए सॉफ्टमोडेम अनिवार्य रूप से फोन लाइनों से जुड़े साउंड कार्ड थे। IIRC, winmodems से होने वाले छोटे विलंबता फायदे थे, क्योंकि आपके पास UART बफ़र्स में आपका डेटा नहीं था। केवल गेमर्स ने देखभाल की। हर कोई अपने सिंगल-कोर सीपीयू से साइकिल बर्बाद करने से नफरत करता है।
पीटर कॉर्डेस

20

आप केवल कमांड सेट के डाउनसाइड के बारे में बात कर रहे हैं। अपसाइड पर विचार करें:

  1. एटी कमांड सेट का उपयोग करके, आपके संचार उपकरण को ओएस के पीपीपी कार्यान्वयन के माध्यम से तुरंत किसी भी आईपी नेटवर्क पर रखा जा सकता है । विकल्प यह है कि कस्टम प्रोटोकॉल इंटरफ़ेस डिज़ाइन करने के अलावा, आपको प्रत्येक OS के लिए अपना स्वयं का नेटवर्क डिवाइस ड्राइवर लिखना होगा जो इससे पहले कि आप इंटरनेट से जुड़ने के लिए अपने डिवाइस का उपयोग कर सकते हैं, ओएस का समर्थन करना चाहते हैं।

  2. किसी भी सक्षम इंजीनियर को यह प्रोटोकॉल पहले से ही पता चल जाएगा। इसे उसी से लें जिसकी दिन की नौकरी के लिए उसे दर्जनों गैर-मानक सीरियल प्रोटोकॉल को समझने और लागू करने की आवश्यकता होती है: एक अच्छी तरह से इंजीनियर आम प्रोटोकॉल बेहतर है।

  3. हालांकि यह सच है कि एटी प्रोटोकॉल काफी जटिल है और कार्य-विशिष्ट उद्देश्य-निर्मित प्रोटोकॉल की तुलना में इसे लागू करने के लिए अधिक मेमोरी लेता है, यह भी मामला है कि जो व्यक्ति इस प्रोटोकॉल को लागू करने का विकल्प चुनता है, वह समय का एक गुच्छा खर्च करने से बचने के लिए जाता है पूरी तरह से अच्छा पहिया। वह डिजाइन विशेषज्ञता के दशकों से आकर्षित करने के लिए मिला है। वह जानता है कि इससे पहले कि वह विकास के समय पर काम करे, यह काम करेगा। अच्छा प्रोटोकॉल डिजाइन आश्चर्यजनक रूप से कठिन है।

    (इन दिनों में, मैं अपने मैग्नम ओपस, "योर प्रोटोकॉल सक्स" को प्रकाशित करने जा रहा हूं, जो कि अधिक भयानक आधे-अधूरे एकतरफा प्रोटोकॉल की गड़बड़ी को रोकने की उम्मीद में है।)


1
जबकि मैं भावना से सहमत हूं; "अच्छी तरह से इंजीनियर"? तीन शब्द: ATSआज्ञा ...
एक CVn

अधिकांश उपकरणों को मैंने देखा है कि तथाकथित "एटी" कमांड का उपयोग पहले दो वर्णों से अलग उनके कमांड सेटों में कुछ भी नहीं है। यदि कोई WiFi मॉड्यूल "ATDT192,168,254,5W1234" को 192.168.254.5 पर 1234 पोर्ट में TCP कनेक्शन खोलने के लिए एक कमांड के रूप में स्वीकार कर सकता है, तो एक मॉडम की उम्मीद करने वाला सॉफ्टवेयर मॉड्यूल का उपयोग ठीक कर सकता है, लेकिन मुझे अभी तक एक नहीं देखना है इसके समान कुछ भी।
सुपरकैट

@supercat: ऐसा इसलिए है क्योंकि एक WiFi मॉडेम ईथरनेट कार्ड के समान अधिक है, जैसा कि संबंधित मानकों (IEEE802 श्रृंखला) और मैक पतों के उपयोग से देखा जा सकता है। और जबकि सवाल "संचार आईसी" के बारे में बात करता है मुझे नहीं लगता कि कोमन ईथरनेट आईसी एटी कमांड सेट का उपयोग करता है।
MSalters

@MSalters: कई परिदृश्यों में, एक समय में एक टीसीपी कनेक्शन स्थापित करने के लिए एक वाईफाई मॉड्यूल का प्राथमिक उपयोग होगा; हेस अनुकरण उस के लिए खूबसूरती से काम कर सकता था। मैंने एक FOSSIL ड्राइवर देखा है जो DOS- आधारित टर्मिनल प्रोग्राम को ऊपर के लोगों की तरह "डायल" नंबर देकर टेलनेट क्लाइंट के रूप में उपयोग करने की अनुमति देगा, और मुझे लगता है कि वही दृष्टिकोण WiFi मॉड्यूल के साथ खूबसूरती से काम करेगा। किसी भी मामले में, मेरी बात यह है कि अगर कोई उत्पाद टीसीपी कनेक्शन स्थापित करने के लिए ऊपर की तरह एक स्ट्रिंग का उपयोग करता है, तो ऐसे उपयोग में महत्वपूर्ण संगतता / परिचितता लाभ होगा, लेकिन ...
सुपरकैट

... मुझे संदेह है कि इन दिनों अधिकांश उपकरण जो "AT" से शुरू होने वाले कमांड का उपयोग करते हैं, ऐसा केवल इसलिए करते हैं क्योंकि उनके रचनाकारों ने कई अन्य उपकरणों को "AT" के साथ शुरू करते हुए देखा और बिना किसी विचार के सूट का अनुसरण किया। इसलिए।
सुपरकैट

14

मैं प्रश्न के दूसरी तरफ विस्तार करूँगा ... क्यों न केवल इंटरफ़ेस में एक और सिग्नलिंग लाइन जोड़ दी जाए?

यह केवल उसी व्यक्ति से पूछा जा सकता है जो वास्तविक 25-पिन RS232 इंटरफ़ेस पर सिग्नलिंग लाइनों के सभी क्रमपरिवर्तन के माध्यम से नहीं रहता था। TXD, RXD और Gnd के अलावा, संकेतों के कई अन्य जोड़े पहले से ही थे, RTS / CTS (रेडी टू सेंड, क्लियर टू सेंड) DSR / DTR (डेटा सेट रेडी, डेटा टर्मिनल रेडी) और एक हार्डवेयर हैंगप पिन। और दूसरे। और निर्माताओं के बीच कोई स्पष्ट सार्वभौमिक समझौता नहीं किया कि वास्तव में क्या कार्य किया है - आपको पहले स्थान पर हार्डवेयर हैंडशेकिंग सिग्नल के दो सेट की आवश्यकता क्यों थी? और सॉफ्टवेयर XON / XOFF प्रोटोकॉल उस के शीर्ष पर) (और क्यों डियाब्लो प्रिंटर जोर देकर कहते हैं - जहां तक ​​मुझे पता है - पिन 11 पर हाथ मिलाने पर?)

कुछ उपकरणों के लिए एक पूर्ण इंटरफ़ेस की आवश्यकता होती है। कुछ TXD / RXD / Gnd से खुश थे। कुछ को पिन 4 और 6 को छोटा करके काम करने में बेवकूफ बनाया जा सकता है (इस प्रकार अपने स्वयं के आरटीएस को सीटीएस में वापस पा सकते हैं)। और कुछ जो DCE होना चाहिए था, वे DTE या इसके विपरीत थे और केवल एक "नल मॉडेम" केबल के माध्यम से किसी और चीज से बात करेंगे, जिसमें प्रत्येक जोड़े के साथ स्वैप किया गया हो।

फिर यह सब आसान करने के लिए, आईबीएम पीसी ने आरएस 232 के लिए एक नया 9-पिन इंटरफ़ेस पेश किया। मतलब आपके सभी मौजूदा संग्रह केबल अप्रचलित थे और आपको फिर से शुरू करना था ...

जिनमें से सभी ने यह विचार किए बिना कि जीवन को कठिन बना दिया है, दोनों छोर अलग-अलग बॉड दरों पर सेट किए गए हो सकते हैं ...

इसने RS232 ब्रेकआउट बॉक्स, केबल और परीक्षण / डिबगिंग टूल के आसपास निर्मित एक पूरे उद्योग का समर्थन किया।

इस संदर्भ में एक और संकेत जोड़ना शायद उड़ान भरने का नहीं था ...


9

"एटी" कमांड का उपयोग करने वाले पहले हेस मॉडेम ने अपने कमांड उपसर्ग के पहले चरित्र के रूप में "ए" को चुना क्योंकि इसे कई बॉड दरों का समर्थन करने की आवश्यकता थी, और लाइन पर "ए" ऐसा दिखता है: -------_-_____-x----------जिसके बीच 5: 1 अनुपात है सबसे लंबी और सबसे छोटी 'कम' बार ("x" समता सेटिंग्स के आधार पर उच्च या निम्न हो सकती है)। 1200 बॉड की तुलना में कोई भी धीमी दर 833 या उससे कम के "कम" समय का प्रबंधन नहीं कर सकती है, और 2400 से तेज़ कोई भी दर 4.16ms या उससे अधिक के "लंबे" समय का प्रबंधन नहीं कर सकती है, इसलिए एक मॉडेम सुरक्षित रूप से यह मान सकता है कि यदि वह ऐसा कुछ देखता है जो दिखता है 1200-बॉड "ए" की तरह, यह है (और इसी तरह 300 बॉड, आदि के साथ)। "T" में "A" से विपरीत समानता है, इसलिए यदि दूसरा वर्ण "T" जैसा दिखता है,

डिवाइस या ड्राइवर जो "एटी" कमांड का उपयोग करते हैं जो हेस मॉडेम कमांड के समान या समान रूप से काम करते हैं (जैसे ATDTW192,168,254,123W4567कि 192.168.254.123 के 4567 पोर्ट से कनेक्ट करने के लिए एक कमांड के रूप में स्वीकार करना) सॉफ्टवेयर के साथ संगतता के लिए ऐसा करते हैं जो एक पुरानी शैली से बात करने की उम्मीद करते हैं। मॉडेम या संगत डिवाइस। हालांकि, कई उपकरण हैं, जो इस सिद्धांत पर "एटी" से शुरू होने वाले कमांड का उपयोग करते हैं कि "एटी कमांड सेट" एक उपयोगी विपणन चर्चा है, भले ही डिवाइस स्वचालित बॉड-दर का पता लगाने में सक्षम न हों और इसके विपरीत कमांड हों किसी भी अन्य डिवाइस पर कुछ भी। इस तरह के संदर्भों में एक कमांड उपसर्ग के रूप में "एटी" का उपयोग कोई संगतता मूल्य नहीं जोड़ता है और कोई उपयोगी उद्देश्य नहीं देता है; डिजाइनर ऐसा करते हैं क्योंकि उन्होंने अन्य डिजाइनरों को ऐसा करते देखा है,

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.