مجموعه دستورهای هایس

مجموعه دستورهای هایس یک زبان فرمان خاص است که ابتداً برای مودم باد (یکا) ۳۰۰، توسط محصولات ریزکامپیوتری هایِس و در سال ۱۹۸۱ توسعه یافته‌است. این مجموعه دستور شامل یک سری رشته متن کوتاه است که در ترکیب با یکدیگر، دستورهای کاملی را برای انجام عملیاتی از قبیل شماره گیری، قطع تلفن و تغییر مشخصات اتصال است. بسیاری از مودم‌های امروزی از این مجموعه دستوری هایِس پیروی می‌کنند.

 تاریخچه 
 پیش زمینه 
با توجه به مقدمه سیستم برد پژوهشنامه (BBS) مودم‌ها معمولاً به صورت مستقیم به خطوط تلفن متصل هستند که این خطوط نیز به نوبه خطوط به مودم خاصی در هر سوی خود متصل هستند. مودم‌ها در دو حالت «شروع‌کننده» یا «پاسخ‌دهنده» کار می‌کنند، و معمولاً کاربر پیش از اتصال مودم، به صورت دستی شماره‌گیری می‌کند، یا اینکه در زمان زنگ خوردن آن را پاسخ می‌دهد. عملیاتی کردن پاسخ دادن تلفن راحت است. برای خودکارسازی تماس‌های بیرونی یک دستگاه جنبی جداگانه (به نام شماره‌گیر) باید به درگاه ورودی خروجی رایانه متصل شود. این پورت معمولاً از استاندارد
RS-۲۳۲ پیروی می‌کند.

این روش زمانی که مودم‌ها به‌طور گسترده‌ای برای ارتباط بین ماشین‌ها (و نه انسان‌ها)، مثل ارتباط ترمینال‌های رایانه‌ای و رایانه‌های بزرگ، مورد استفاده قرار می‌گرفتند، در اواخر دهه ۶۰ و اوایل دهه ۷۰ میلادی کاربرد عملی پیدا کرد. در دهه ۷۰ میلادی، انقلاب ریز-رایانه‌ای به تولید مودم‌های کم‌هزینه منجر شد. بسیاری از کاربرهای تمایل به تماس با دیگر کاربرها داشتند و تنها راه‌حل در آن زمان شماره‌گیری مستقیم بود.

صنعت رایانه نیازمند راهکاری بود که توسط نرم‌افزار به مودم بگوید چه شماره‌ای باید بگیرد. در آن زمان شماره‌گیرهای تازه به بازار آمده توانایی این کار را داشتند؛ ولی این قابلیت تنها با پرداخت هزینه خرید شماره‌گیر در اختیار کاربر قرار می‌گرفت و هزینه کلی بالا می‌رفت. یکی از راهکارها استفاده از مجموعه‌ای از سوزن‌های جداگانه بود که توسط آن‌ها فرمان یه مودم داده شود. این سوزن‌ها «سوزنِ دستور» خوانده می‌شدند. راهکار دیگری که مورد استفاده قرار گرفته بود، استفاده از یک سوزنِ علامت بود که مودم باید دستورهای دریافت شده از این سوزن را اجرا می‌کرد؛ ولی این دو روش با مشکل مواجه می‌شدند. زیرا در بسیاری از وسایل این سوزن وجود نداشت یا به دلیل عدم استفاده اصلاً در مدار نبود.

 راه‌حل هایِس 
شرکت ارتباطات هایِس در سال ۱۹۸۱ مودم هوشمند خود را با بازتعریف کاربرد سوزن‌های موجود در استاندارد RS-۲۳۲ و بدون تغییر در تعداد و بدون تغییر در این استاندارد راهی بازار کرد. این مودم برخلاف مودم‌های پیشین در دو حالت کار می‌کرد:
 حالت داده: در این حالت مودم داده‌های را به مودم دوردست می‌فرستد. مودم در این حالت هر چیزی را که از رایانه به آن برسد به صورت داده تلقی کرده و آن را از طریق خط تلفن منتقل می‌کند.
 حالت دستور: در این حالت مودم داده‌های رسیده از رایانه را دستور تلقی کرده و در درون مودم محلی آن را اجرا می‌کند.
به منظور تغییر کاربری مودم از حالت داده به حالت دستوری، باید یک رشته "توالی فرار" که شامل سه علامت مثبت است ("+++") را به مودم ارسال کنیم که همراه یک مکس ۱۰۰۰ میلی ثانیه‌ای است (به منظور در نظر گرفتن زمان تغییر حالت مودم از یک حالت به حالت دیگر). برای تغییر حالت معکوس، یعنی تغییر از حالت دستوری به داده، از دستور برخط (O) استفاده می‌شود. در عمل، پس از اجرای بسیاری از دستورها مودم به‌طور خودکار به حالت برخط می‌رود.

اینگونه استفاده از علامت‌دهی داخلی (بین رایانه و مودم) ممکن بود به مشکلاتی منجر شود. مثلاً فرض کنیم کسی قصد داشت که پرونده‌ای را ارسال کند که شامل سه علامت مثبت پشت سر هم بود. برای فائق آمدن بر این مشکل باید حتماً مکث ۱۰۰۰ میلی ثانیه‌ای مد نظر گرفته می‌شد. اگر پس از هر سه علامت مثبت پشت سر هم، در ۱۰۰۰ میلی ثانیه بعدی علامتی داده می‌شد، این دستور تلقی نمی‌شد و داده تلقی شده و هر سه علامت مثبت به همراه بقیه علامت‌ها به مودم دوردست ارسال می‌شدند.

 دستورها 
مجموعه دستورهای هایِس شامل دستورهایی به منظورهای متفاوت مثل دستکاری خط تلفن، شماره‌گیری، و قطع خط ارتباطی بود. همچنین دستورهایی برای راه‌اندازی مودم بود، که آن هم به نوبه خود شامل دستورهای مربوط به دستورهای ثبات‌ می‌شد و به کاربر اجازه می‌داد که مستقیماً از داخل حافظه گوشی، شماره‌های ثبت شده شماره‌گیری شوند. این دستورها عموماً به صورت کلمه به کلمه منتقل می‌شد و در آن دوره مودم‌های باد ۳۰۰ یک مقدار کار را سخت می‌کردند.

با پیشرفت مودم‌ها به مودم‌های ۱۲۰۰ baud و ۲۴۰۰ baud، نیاز به دستورهای جدید احساس می‌شد. برخی از پسوند اتصالِ "&" استفاده می‌کردند که نشان دهنده یک دستور جدید برای مودم است. شرکت هایِس خود را متعهد به ساخت مودم‌های ۲۴۰۰ baud کرد.Frank Durda IV, "The AT Command Set Reference - History" , 1993
یک سال بعد از این کار
TIA/EIA
مجموعه دستورهای ۲۴۰۰-baud را به شکل استاندارد درآورد و تحت عنوان ادوات و سیستم‌های انتقال داده – کنترل و شماره‌گیری خودکار غیرهمزمان سریال، TIA/EIA-۶۰۲ منتشر کرد.

پس از آن شرکت ارتباطات هایِس به دنبال افزایش سرعت و فشرده سازی رفت، در حالی که سه شرکت دبگر در آن زمان (یعنی
Microcom
,
U.S. Robotics
، و
Telebit) در همین‌جا توافق کرده بودند هرکدام از این شرکت‌ها به جای پیروی از شرکت هایِس (که پدر این تکنیک بود)، به توسعه مجموعه دستورهای خود پرداختند. در اوایل دهه ۹۰، چهار مجموعه دستور مودم به‌طور جامع مورد استفاده قرار می‌گرفت. با ارائه مودم‌های ۴/۱۴ و ۸/۲۸ کلیو بیت بر ثانیه در اوایل دهه ۹۰، مسائل ساده‌تر شدند. کم‌کم مجموعه دستورهای تولید شده توسط هایِس که با استفاده از واژه & گسترش یافته بودند محبوبیت یافتند و جهانی شدند. تنها مجموعه دستورهای یک شرکت دیگر محبوب ماند و آن هم شرکت US Robotics بود. دلیل این امر هم گستردگی محصولات این شرکت بود.

 توصیفات 
در فهرست زیر، قسمتی از مجموعه دستورهای هایِس آورده شده‌است (این دستورها، دستور AT هم خوانده می‌شوند؛ از آن جهت که ابتداً برای انجام هر دستوری در مودم، باید مودم را آگاهattention
می‌ساختند)
 مجموعه دستورهای پایه – یک واژه بزرگ همراه با یک عدد. مثل M1.
 مجموعه دستورهای توسعه یافته – یک واژه & و یک واژه بزرگ همراه با یک عدد. با این کار دستورهای پایه گسترده‌تر می‌شدند. مثلاً دستور &M۱ که با دستور M۱ متفاوت بود.
 مجموعه دستورهای اختصاصی – معمولاً با یک واژه برش-برعکس “\”و یا علامت درصد “%” شروع می‌شوند. این دستورها به طور گسترده توسط سازندگان مودم استفاده می‌شوند.
 دستورهای ثبات – مثل Sr=n که r شماره حافظه‌ای است که قرار است تغییر کند، و n مقداری است که باید بگیرد.

یک ثبات یک خانه فیزیکی در حافظه را نمایش می‌دهد. مودم‌ها حافظه کوچکی در خود دارند. این ثبات‌ها می‌توانند محتویات خاصی داشته باشند که شامل عدد و حروف باشد. این حافظه می‌تواند توسط نرم‌افزارهای ارتباط مورد استفاده قرار بگیرند. برای مثال دستور S7=۶۰ به رایانه داخلی می‌گوید که مقدار ثبات شماره ۷ را برابر با ۶۰ قرار بده. بسیاری از دستورها در این مجموعه دستورها با ترکیب حرف-عدد به نمایش در می‌آیند. استفاده از ۰ اختیاری است. برای مثال دستور L۰ همان دستور L است.

زمانی که مودم در حالت داده است، و یک توالی فرار مودم را از این حالت خارج کرده و به حالت دستوری تغییر می‌دهد. یک توالی فرار معمولی شامل سه علامت مثبت پشت سر هم است ("+++") برای رفع ابهام این واژه‌ها با داده‌های واقعی، یک فاصله زمانی (مکث) مورد استفاده قرار می‌گیرد.

 تعریف دستوری 
در این مجموعه دستوری از قواعد دستوری زیر استفاده می‌شود:
 <CR>. کاراکتر انتقال-برگشت، کاراکتر اتمام دهنده دستورها است. پس از ارسال این کد، مودم به بررسی کاراکترهای فرستاده شده تا پیش از این کاراکتر می‌پردازد. مقدار این کاراکتر در کد اسکی برابر با ۱۳ است که در ثبات S۳ ذخیره می‌شود. به جای این کاراکتر می‌توان مقدار دیگری را بین ۰ تا ۲۵۵ در ثبات مذکور قرار داد.
 <LF>. این کاراکتر تحت عنوان کاراکتر اتمام خط شناخته می‌شود. مقدار این کاراکتر در کد اسکی برابر با ۱۰ است که در ثبات S۴ ذخیره می‌شود. به جای این کاراکتر می‌توان مقدار دیگری را بین ۰ تا ۲۵۵ در ثبات مذکور قرار داد. اگر در حالت پرجانه باشیم (که با پارامتر V۱ مشخص می‌شود و هر اتفاقی که بیفتد کاملاً و مفصل گزارش می‌شود). آنگاه پس از هر کاراکتر <CR>، یک کاراکتر <LF> در خروجی مودم ظاهر خواهد شد. در غیر این صورت باید در حالت پاسخ عددی باشیم (که با پارامتر V۰ مشخص می‌شود) که پس از کاراکتر <CR>، چیزی ظاهر نمی‌شود.
 <…>.
 […]. زیر-پارامترهای اختیاری یک دستور در این علامت‌ها قرار داده می‌شوند. این کروشه‌ها در دستور ظاهر نمی‌شوند.

 آماده‌سازی مودم 
یک رشته می‌تواند شامل چندین دستور هایِس باشد. این امر به منظور بهینه کردن عمل شماره‌گیری یا پاسخ دهی مودم آنجا م می‌گیرد. مثلاً دستور AT&F&D2&C1S0=۰X4 را در نظر بگیرید که رشته آماده‌سازی نام دارد.
قوانین V.۲۵۰ تمام DCEها را ملزم می‌کند که پس از "AT" حداقل ۴۰ واژه را به صورت دستورهای متصل به هم بپذیرند.

 مثال 
در ادامه دو رایانه A و B را که با مودم به هم متصل هستند را در نظر گرفته‌ایم، که یک کاربر قصد دارد با یک نرم‌افزار شبیه‌ساز ترمینال آن دو را کنترل کند. اصولاً نرم‌افزار شبیه‌ساز ترمینال به کاربر این اجازه را می‌دهد که دستورهای هایِس را مستقیماً به مودم ارسال کند و پاسخ‌های آن را مشاهده کند. در این مثال کاربر رایانه A مودم را مجبور می‌کند که شماره رایانه B را بگیرد. دقت کنید که پس از هر ارسال یا دریافت، یک انتقال-برگشت برای تکمیل پیام ارسال می‌شود.

 Modem A Modem B Comment ATDT۱۵۵۵۱۲۳۴   کاربر مودم A دستور شماره‌گیری ارسال می‌کند: واژه AT مودم را آگاه می‌کند، واژه D ابتدایی دستور شماره‌گیری است، T نشان دهنده ویژگی بوق-تماس و شماره پس از آن نیز شمارهرایانه دیگر است.  RING  مودم A شروع به شماره‌گیری می‌کند. مودم B زنگ می‌خورد، و سپس واقعیت را گزارش می‌کند.  ATA  رایانه B دستور پاسخ دادن را به مودم ارسال می‌کند. CONNECT  CONNECT  هر دو مودم به یکدیگر متصل می‌شوند و هر دو مودم پدیده "اتصال" را گزارش می‌کنند. در عمل مودم‌های اطلاعات بیشتری را پس از "اتصال" نیز گزارش می‌کنند. در همین زمان هر دو مودم بر روی درگاه مودم علامت DCD (یا تشخیص حامل داده) را روشن می‌کند. abcdef  abcdef  زمانی که مودم‌ها متصل شدند، هر واژه‌ای که یک سوی اتصال تایپ شود در سوی دیگر نیز ظاهر می‌شود. شخصی که پای رایانه A نشسته است حروفی را تایپ می‌کند. حروف از مودم‌ها عبور کرده و بر روی صفحه رایانه B ظاهر می‌شوند. (کاربر رایانه A ممکن است حروفی که تایپ کرده‌است را نبیند. این بستگی تنظیمات نرم‌افزار ترمینال دارد. با استفاده از دستور ATE می‌تواند ویژگی پژواک دستورهای خود خاموش یا روشن کند.  +++  شخصی که پای رایانه B نشسته است دستور فرار مودم را ارسال می‌کند (به گونه‌ای دیگر و بسیار معمول، رایانه B می‌توان DTR را خاموش کند تا تماس را قطع کندبدون نیاز به +++ یا ATH.  OK  مودم تأیید می‌کند.  ATH  کاربر رایانه B دستور قطع تماس را صادر می‌کند. NO CARRIER  OK  هر دو مودم گزارش می‌دهند که ارتباط قطع شده‌است. مودم B پاسخ “OK” را برمی‌گرداند که پاسخ دلخواه است!. مودم A عبارت “NO_CARRIER” را گزارش می‌کند تا نشان دهد که سمت دوردست ارتباط را مختل کرده‌است. هر دو مودم علامت DCD را خاموش می‌کنند..

 سازگاری 
زمانی که مجموعه دستورهای اصلی ارائه شدند، با وجود مشکلات بسیار که هایِس نیز مسبب آنها نبود، یک جهش عظیم در ارتباطات بر پایه مودم ایجاد شد.
 به دلیل نبودن یک استاندارد نوشته شده، دیگر تولیدکنندگان مودم تنها ظاهر خارجی دستورها را رونوشت کرده و تنها قسمتی ابتدایی از آن را برداشتند. این باعث تفاوت‌هایی در چگونگی تغییر حالت و کاربری مودم ایجاد کند.
 هر سازنده علاقه داشت که دستورهای جدیدی را اضافه کند که بتواند نیازهایش را رفع کند. این باعث عدم سازگاری با مودم‌های دیگر می‌شد.
 بسیاری مودم‌های "سازگار با هایِس" دارای تغییرات زیادی شدند که به‌طور مؤثری سازگاری آن‌ها با یکدیگر را مختل می‌کرد. برای مثال بسیاری از مودم‌ها پس از دریافت دستور بازیابی "ATZ" نیاز به زمان مکث داشتن. برخی مودم‌ها بین دستورها نیاز به فاصله جداکننده داشتند، در حالی که دیگر مودم‌ها نداشتند. برخی مودم‌ها خودبه‌خود باد خود را تغییر می‌دادند و این کار باعث می‌شد که رایانه نتواند به تماس‌های دریافتی پاسخ دهد.

در نتیجه این مسائل بود که ناگهان بسیاری از برنامه‌های ارتباطی نتوانستند به همکار خود با مودم‌های "سازگار با هایِس" ادامه دهند و مجبور شدند نوع مودم را با توجه به پاسخ‌های دریافتی از مودم تعیین کنند، یا کاربر را مجبور ساختند انواع محدودی از مودم‌ها (که توانایی کار با آنها را دارند) را انتخاب کنند.

 مجمعه دستورهای ابتدایی هایِس 
 Command Description Comments A0 or A به تماس ورودی پاسخ می‌دهد A/ دستور آخر را تکرار می‌کند دستور AT را پیش از آن قرار ندهید. انتقال-برگشت را پس از آن قرار ندهید. D شماره‌گیری با پارمترهای زیر شماره‌گیریکرده و سپس به دست‌تکان دادن می‌پردازد

P - شماره‌گیری پالس

T - شماره‌گیری تن

W – منتظر بوق آزاد بعدی می‌ماند

R – پس از شماره‌گیری به‌طور خودکار به حالت انتظارتماس بر می‌گردد

@ - تا ۳۰ ثانیه منتظر تماس برگشتی می‌ماند

¸ - تا مدت زمان مشخص شده در ثبات S۸ (که معمولاً ۲ است) مکث می‌کند. یکای این ثابت ثانیه است.

 - پس از شماره‌گیری در حالت دستوری می‌ماند – قطع ضربتی تماس (به مدت ۵۰۰ میلی ثانیه خط را قطع کرده تا تماس را منتقل کند)

L – آخرین شماره را دوباره شماره‌گیری می‌کند E0 or E بدون پژواک پژواک دستوراها را به رایانه برنمی‌گرداند. E۱ پژواک پژواک دستوراها را به رایانه برمی‌گرداند (لذاکاربر می‌تواند آنچه را که تایپ کرده مشاهده کند). H۰ وضعیت گوشی در صورتی که خط وصل باشد (اصطلاحاً گوشی برداشته شده باشد) آن را قطع می‌کند و هر تماس در حال شماره‌گیری را قطع می‌کند. H۱ وضعیت گوشی اگر خط قطع باشد (اصطلاحاً گوشی برداشته نشده باشد) خط را وصل می‌کند (گوشی را برمی‌دارد). در این زمان باید منتظر صدای بوق آزاد خط تلفن بود. I0 to I۹ پرس و جو، اطلاعات، یا بازجویی مودم این دستور اطلاعاتی در رابطه با مدل (مثل نرم‌افزار راه‌انداز آن یا سازنده آن) برمی‌گرداند. هر شماره (عددی بین ۰ تا ۹ گاهی ۱۰ یا بیشتر هم دیده می‌شود) یک خط از اطلاعات مودم را برمی‌گرداند. اگر ثبات تعریف نشده باشد عبارت ERROR بر می‌گردد. امروزه سیستم عامل ویندوز از این ویژگی جهت تشخیص انواع مودم‌ها در حالت وصل-و-استفاده سود می‌برد. L0 or Ln (n=۱ to 3) حجم صدای بلندگوها. تنها برخی مودم‌ها (اکثراً مودم‌های بیرون-کار) از آن پشتیبانی می‌کنند. حجم صدای کم یا قطع کامل صدا M0 or M قطع کامل صدا در طول تماس ثبات M۳ نیز همین عمل را انجام می‌دهد؛ ولی بستگی به سازنده مودم نیز دارد. M۱ بلندگو تا زمانی که مودم دوردست علامت تسخیص حامل را روشن نگاه داشته، روشن می‌ماند. (یعنی تا زمانی که مودم دیگر شنیده می‌شود) M۲ بلندگو روشن می‌ماند (صدای انتقال داده‌ها پس از دریافت CONNECT شنیده می‌شود). O به وضعیت بر خط بر می‌گردد پس از دریافت کد فرار "+++"، یه حالت معمولی اتصال بر می‌گردد. Q0 or Q حالت ساکت خاموش – کدهای پاسخ نشان داده می‌شوند و کاربر پاسخ دستورهای خود را می‌بیند. (OK) Q۱ حالت ساکت روشن - کدهای پاسخ خاموش می‌شوند و کاربر پاسخ دستورهای خود را نمی‌بیند. Sn یک ثبات را انتخاب می‌کند
دقت کنیدکه Sn، ؟ یا =r در حقیقت که دستور جداگانه هستند. ثبات شماره n را به عنوان ثبات جاری (قابل استفاده در حال حاضر) انتخاب می‌کند. Sn? ثبات شماره n را به عنوان ثبات جاری انتخاب می‌کند؛ و محتویات آن را سؤال می‌کند. استفاده از؟ به تنهایی سؤال می‌کند که کدام ثبات در حال حاضر انتخاب شده‌است. Sn=r ثبات n را به عنوان به عنوان ثبات جاری انتخاب می‌کند و مقدار r را در آن ذخیره می‌کند. V۰ یا V پرچانگی نتایج را به صورت عددی نمایش می‌دهد V۱ نتایج را به زبان انگلیسی برمی‌گرداند (مثلاً CONNECT، BUSY، NO CARRIER و غیره) X0 or X مودم-هوشمند Hayes Smartmodem 300 compatible result codes X۱ معمولاً سرعت ارتباط را همراه با کدهای خروجی چاپ می‌کند (مثل CONNECT 1200) X۲ معمولاً علامت تشخیص بوق آزاد را همراه نتایج گزارش می‌کند. (از شماره‌گیری کور، و گاهی از ATO جلوگیری می‌کند. X۳ معمولاً تشخیص علامت اشغال را نیز گزارش می‌کند. X۴ معمولاً هم تشخیص علامت اشغال و هم تشخیص بوق آزاد را گزارش می‌کند. Z0 or Z بازسازی مودم را به تنظیمات کارخانه بازمی‌گرداند. استفاده از Z۰، Z۱ و غیره برای نمایه‌های مختلف خواهد بود. این دستور مشابه &F است برای مودم‌هایی که NVRAM ندارند.

 GSM 
استاندارد ETSI GSM 07.۰7 (3GPP TS 27.007) برای کنترل و تنظیم گوشی یا مودم GSM دستورهای AT خاصی را تعریف کرده‌است.
در کنار این استاندارد که تنها برای گوشی یا مودم است، استاندارد دیگر با شماره ETSI GSM 07.۰5 (3GPP TS 27.005) وجود دارد که دستورهای لازم جهت مدیریت پیام کوتاه در شبکه GSM را تعریف می‌کند. مثال‌هایی از این دستورها در زیر آمده‌اند 090505 developer.sonyericsson.com 090505 m2m-platforms.com

 دستور توضیحات AT+CPIN=۱۲۳۴  ورود PIN code AT+CPWD="SC","old","new"  تغییر کد PIN از مقدار 'قدیمی' به مقدار 'جدید'. AT+CLCK="SC",۰,"۱۲۳۴"  حذف کد PIN AT&V  اعلام وضعیت ATI  گزارش ساخت (سازنده، مدل، بازبینی،
IMEI
، قابلیت‌ها) AT+COPS=?  List available networks
۰-ناشناس/۲-فعلی/۳-ممنوع، نام بلند، نام کوتاه، مشخصه عددی، "AcT" AT+CSQ  قدرت سیگنال دریافتی را برمی‌گرداند پاسخ:
+CSQ:
<rssi (more=better)>
،
<ber, less=better> ATD*۹۹#  مرکز دسترسی را شماره‌گیری می‌کند
مودم‌های GSM/3G معمولاً مجموعه دستورهای ETSI GSM 07.۰7 (3GPP TS 27.007) و دستورهای توسعه یافته پس از آن را نیز پشتیبانی می‌کنند. بسیاری از تولیدکنندگان مودم USB مثل Huawei, Sierra Wireless، و Option نیز دستورهایی را برای استفاده در حالت رادیویی (GSM/3G) توسعه داده‌اند.

 منابع 

رده:مودم‌ها
رده:استانداردهای مربوط به شبکه‌ها