پایان نامه مقطع کاشناسی
رشته مهندسی کامپیوتر
سال 1382
خلاصه :
اين تز يك قسمت از پروژه HSV در مركز استراليايي براي زمينه رباتيك در دانشگاه سيدني است . هدف توسعه Package ارتباطي بي سيم براي ارتباط بين كامپيوتر آن بورد ute و كامپيوتر اپراتور است . اول از همه حسگرها و محرك ها مطالعه و بحث شدند و همه داده هاي مهم كه اپراتور ممكن است به آن علاقه داشته باشد تحليل و معين شده اند . سيستم ارتباطي بي سيم سپس انتخاب و گسترش يافت . بانداستفاده شده 2.4 GHz بود و سيستم IEEE802.llb بوسيله ارتباط پيك توپيك كامپيوترها استفاده مي شود . Package سخت افزاري بي سيم به دفت انتخاب شده مانند : آنتن ute ، آنتن اپراتور كارت اينترنتي ارتباطي بي سيم و مبدل اينترنتي . كتابخانه ارتباطي استفاده شده كتابخانه msg-Bus بود . جايي كه ارتباط به آساني فعال مي شود تا پيامها در يك زمان فرستاده شوند .دو نرم افزار اصلي توسعه يافت . اولين نرم افزار توسعه يافته براي ute تمام ديتاي حسگرها را ز حافظه تقسيم شده هسته اصلي مي خواند و آن را به كامپيوتر اپراتوري مي فرستد . نرم افزار دوم ، نرم افزار اپراتور با ute ارتباط مي يابد و ديتاي مخصوصي رامي خواهد و آن را در فايلهاي متني ذخيره مي كند . سرانجام ، روالهاي مطمئن براي هر كس طرح ريزي شده كه ute براي مردم توسعه يافته استفاده كند و هر بخش از آزمايش انجام شده در هر زمان را دنبال كند .
فصل اول
مقدمه
Chapter 4 :
4.1 Background : (پيش زمينه)
massage-Bus رابط برنامه نويسي كاربردي msg-Bus يك كتابخانه براي پشتيباني پردازش داخلي و ارتباط سيستم داخلي است كه واسط سوكت را استفاده مي كند . كتابخانه پروتكل پيام دياگرام را استفاده مي كند (UDP) كه بوسيله IP فراهم مي شود. اين انتخاب كه نسبت به استفاده TCP برتري دارد ساخته شده است . براي اجراي دلايل و بدليل اينكه واسط اساسي (اترنت سريع كليدداري در صفحه بندي hupspoke) خودش به تنهايي مجزا است : ارتباط دو طرفه نقطه به نقطه پس گره ها و تصادم يابي با دوباره ارسال كردن بسته ها گم شده . كتابخانه براي كد كردن ساختار دستوري C++ است .
توابع گذرگاه پيام : 4.2
يك سيستم توزيعي شامل تعدادي از سيستم هاست (كه گره ها ناميده مي شوند) جايي كه روي هر نود يك شماره از فرايندها (كه وظايف خوانده مي شوند) مي توانند اجرا شوند . هدف از يك message Bus يك گذرگاه پيام فعال سازي اين وظايف است براي انتقال دادن اطلاعات تبادلي و همزمان سازي اهداف دليل استفاده از message Bus براي اين تبادلات اجتناب از ارتباطات نقطه به نقطه يك شبكه وسيع و بدست آوردن معماري سيستم پيمانه اي است . هدف توانايي ارتباط (گذراندن پيام) پس وظيفه ها در نودهاي مختلف پاپس وئظايفي در نود مشابه بدون ايجاد هيچ تغيير براي وظايف ديگر در سيستم مي باشد . كتابخانه msg-bus شامل تعدادي از توابع است كه بوسيله سرويس گيرنده ، سرور و برنامه هاي نظير به نظير فراخواني مي شووند . بوسيله استفاده از اين فراخواني ها يك سيستم تمام توزيع شده عبور دهنده پيام ميتواند در هر سيستم عامل پشتيباني شده فهميده شود . چهار تابع اصلي شامل :
msg - attach message Bus نصب ارتباط
msg - detach message Bus آزادسازي ارتباط با
msg - send فرستادن يك پيغام به برنامه يا نود ديگر
msg - receive انتظار رسيدن يك پيغام و خواندن آن
4.2.1 : ضميمه يا پيوست
تابع كتابخانه اي msg-bus يعني msg-attach اولين تابعي است كه بوسيله هر فرايندي كه بخواهد msg-Bus را استفاده كند فراخواني مي شود . آن نود و برنامه را براي ايجاد سوكت و تنظيم يك ساختار عمومي با ديتاي معمولي استفاده مي كند . تابع مقدار Msg-ok(0) را هنگامي كه الحاق موفقيت آميز است يا يكي از كدهاي خطا در جايي كه سوكت باز است ، بسته است يا خطاها قرار داده شده اند برمي گرداند .
Long msg - attach (char*node,char*task)
(گره) : nede
نود نامي از خود سيستم است (در واقع آدرس IP) كه بوسيله يك رشته درفرمت
"XXX.XXX.XXX.XXX" معرفي مي شود . (براي مثال "155.69.31.90" ) .
(وظيفه) : task
task(وظيفه) اسمي از خود سيستم است :اين بايد يك رشته باشد كه يك عدد صحيح است . ( در واقع يك شماره درگاه) در رنج 65535+1024 را معرفي مي كند . (براي مثال "5016" )
(انفعال ) Detach 4.2.2
تابع كتابخانه msg-bus يعني msg-attach بايد قبل از خارج شدن برنامه كاربردي فراخواني شود كه msg-bus استفاده شود . آن نزديك socket خواهد بود . هيچ پارامتري هم نياز نيست .
Long msg-detach( );
4.2.3
msg-send از تابع كتابخانه اي msg-bus براي فرستادن پيغام به برنامه (وظيفه) ديگر بكار مي رود . تابع يك بسته با اطلاعات فرستنده و گيرنده اضافه خواهد كرد . براي توانايي فرستادن ، سوكت بايداول بوسيله msg-attach ( ) اضافه شود . ID پيغام و طول (اگر لازم باشد) به دستور بايتي شبكه تبديل خواهند شد. براي محتويات ميدان داده اي ، آن مسئوليت برنامه كاربردي است كه اين را انجام دهد . براي اطمينان از اينكه آن دريافت شده باشد ، پارامتر قبلي بايد به شكل صحيح تنظيم شود . سپس msg - send ( 0 قبل از اينكه برگردد منتظر يك تعويق (البته استفاده از يك timeout) مي ماند . تابع هنگامي كه فرستادن موفقيت آميز باشد msg-ok(0) را بر مي گرداند يا هنگامي كه فرستادن خطا داشته باشد يكي از كدهاي خطا را بر مي گرداند . timeout يا تصديق .
Long msg - send (char*nede , char * tssk , Long id , Long len , char * data , boolck);
Node
نود يا گره نام سيستم است (آدرس IP) جايي كه برنامه قرار مي گيرد . نام نود در رشته اي در فرمت "XXX.XXX.XXX.XXX" معرفي مي شود (براي مثال "155.69.31.90"
task
وظيفه يا برنامه نام فرايند مقصد است : اين بايد يگ رشته بارها كه يك عدد صحيح (در واقع يك شماره گذرگاهي) در رنج 1024 به 65535 را معرفي كند (براي مثال "5016")
id
شناسه اي از پيام براي فرستادن است . (ID ساختار پيام ، احتياج به دريافت وظيفه براي جذب داده دارد)
Len
طول ، در مقياس بايت : دنباله بلاك داده است .
data
بلاك ديتا ، يك رشته است .
ack
اگر فرستنده بخواهد براي تصديق دريافت منتظر بماند بولين True را set مي كند .
: دريافت 4.25
msg-receive تابع كتابخانه اي msg-bus يك پيام را از يك سوكت دريافت مي كند و با ID پيام و ديتا جواب مي دهد . مقدار time out مي تواند براي ثانيه هاي زياد انتظار كشيدن داده شود . زماني كه يك time out اتفاق بيافتد ، تابع بوسيله كد خطاي Msg-ERR-timeout(-30) برگردانده مي شود .
اگر timeout به 1- تنظيم شود تابع براي هميشه براي يك پيام ورودي منتظر خواهد ماند .
(اين در يك setup استفاده خواهد شد جايي كه برنامه دريافتي به يك event ورودي لينك شده است براي اينكه تابع بازخورد فراهم شود) . تابع هنگاميكه پيام دريافتي موفقيت آميز باشد msg-ok(0) را بر مي گرداند يا يكي از كدهاي خطا را هنگامي كه خطا دريافت مي شود . time out يا تصديق . زماني كه يك ساختمان داده دريافت ميشود ، اين ساختار فقط بعد از اينكه ID پيغام شناخته شده يكي مي شود .
ما يك اشاره گر براي يك ساختار درست فرمت شده ايجاد خواهيم كرد و آن را به يك ميدان داده اي ساختار نيافته براي دستيابي به داده نسبت مي دهيم .
Long msg - receive(char*nede,char*task,Long* id , Long* len , char* data , Long timeout) ;
Node
نود نام سيستم است (آدرس IP) جايي كه فرايند فرستاده شده ناشي مي شود . اسم نود بوسيله يك رشته در فرمت "XXX.XXX.XXX.XXX" معرفي مي شود . (براي مثال "135.69.31.90" )
task
برنامه (وظيفه) نام فرايند فرستاده شده است . اين شايد يك رشته باشد كه يك عدد صحيح (در واقع يك شماره گذرگاه) در رنج 1024 تا 65535 را معرفي كند (براي مثال "5016")
id
شناسه اي از پيام دريافتي است . ID بوسيله برنامه فرستاده شده با موافقت با وظيفه دريافتي استفاده مي شود تا ساختار پيام تعريف شود . برنامه دريافتي براي جذب داده مورد نياز است .
Len
طول ، در مقياس بايت : دنباله بلاك داده است .
data
بلاك ديتا ، يك رشته است .
timeout :
انتظار كشيدن به مدت چند ميلي ثانيه براي يك پيام ورودي . هنگامي كه timeout صفر است تابع فقط با ديتايي كه در صف موجود است بر مي گردد . وقتي مثبت است، اين تابع بلوكه مي شود و تا وقتي كه پيام برسد منتظر مي ماند .
پيغامهاي فوري 4.3
كتابخانه مي تواند بين پيامهاي معمولي و پيامهاي فوري فرق قائل شود . براي هر برنامه اي كه كانال ارتباطي استفاده مي كند همچنين يك كانال فوري مي تواند باز شود. اگر كانال ارتباطي معمولي بسته باشد كانال اضطراري مي تواند استفاده شود . تابع msg-attach-urgent از كتابخانه msg-bus خيلي به msg-attach شبيه است . هر چند سوكت هاي مختلف براي تهيه كانال جدا براي پيام هاي اضطراري باز است . اين كانال اضطراري مورد نياز است زيرا براي پيام هاي اضطراري به صف شدن و گم شدن غيرقابل قبول است زيرا بافر سرريز مي كند . تابع مي تواند بوسيله هر فرايندي كه مي خواهد تسهيلات كانال اضطراري از msg-bus را استفاده كند فراخواني شود . آن مي تواند با msg-attach( ) در زمان نصب فراخواني شود . تابع هنگامي كه الحاق موفقيت آميز باشد msg-ok(0) را بر مي گرداند يا يكي از كدهاي خطا را هنگاميكه سوكت باز باشد يا بسته يا خطاها set شوند نشان مي دهد .
Long msg - attach - urgent(Char*nede,char*task) ;
چيز مشابهي كه به فرستادن پيغام ها ، دريافت پيغامها و جدا كردن پارامترها جواب ميدهد مانند زير است:
Long msg - send - urgent(char*node,char*task , Long id, Long len , char* data , bool ack) ;
Long msg - receive - urgent (char*node , char * task , Long * id , Long * len , char * data , Long timeout) ;
Msg-detach 0 urgent ( ) ;
در پروژه ها پيامهاي فوري استفاده نمي شود زيرا اساساً پيامهاي ارتباطي كاملاً ساده و به موقع هستند . هچ كدام از آنها اضطراري نيستند .