# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه >  TCP/IP and RS232

## RezaBS

سلام
تا به حال از مسیر RS232 پروتکل TCP/IP رد کردید؟

----------


## SyntaxCheck

سلام
آقا رضا راستش سوال شما جوابش خیلی جالب میتونه باشه.من راجع بهش فکر کردم.جواب برای پروتکل TCP/IP روی RS232 ندارم.اما من یه سری کامپوننت برای کار با RS232 دارم.اگه خواستی بگو برات بفرستم.

----------


## Inprise

دوست عزیز

سوالت مفهوم علمی نداره . شرمنده

RS232  یک استاندارد سخت افزاری ( همراه با ایمپلمنتیشن های متفاوت نرم افزاری ) است که عموما برای کنترل تجهیزات سخت افزاری توسط کامپیوتر با اینترفیس پارالل به کار میره . من میتونم از طریق این رابط یک ضربان سنج قلب رو توسط نرم افزار کنترل کنم و تو توسط همین رابط یه ربات رو کنترل کنی لیکن برنامه من و برنامه تو هیچ وجه اشتراکی نداشته باشند ( بخاطر ساختار متفاوت سخت افزار ها ) .

TCP/IP  مجموعه ای از پروتکلهای جهانی است که به طور وسیعی روی شبکه های امروزی استفاده میشه . من میتونم برنامه ای بنویسم که اپلیکشن سرور من رو از راه دور کنترل کنه و تو برنامه ای بنویسی که دستورات شل رو درست مثل یک تلنت سرور در اختیار کلاینتهات بزاره و در عین حال برنامه من و تو علی رغم استفاده از یک استاندارد هیچ وجه تشابهی با هم نداشته باشند به دلیل پیاده سازی ها مختلف نرم افزار ها ...

یه بار دیگه هم این سوال رو توی اون یکی مسج بورد پرسیده بودی و میخواستم به تفصیل جواب بدم اما وقت نداشتم . بهر حال ...

الف) باید از طریق برقراری ارتباط به درایور مربوط ( چه خودت طراحی کرده باشی چه دیگران ) و از طریق  RS232 با سخت افزارت ارتباط برقرار کنی و کنترلش رو در اختیار داشته باشی 

ب) از طرف دیگه نوم افزارت از طریق TCP بتونه دستوراتی رو دریافت کنه 

ج) برنامه ات حالا دستورات گرفته شده از طریق TCP  رو تجزیه و تحلیل میکنه و از طریق همون رابط قبلی به سخت افزار دستورات لازم رو میده .

میشه کلاسهای خاصی طراحی کرد که با یک دید همه جانبه بتونن خیلی از وظایف شما رو اتومات انجام بدن اما بهر حال جزءیات نرم افزار رو فقط خودت میدونی و قسمت اعظم کد رو باید خودت بنویسی . لذا در جواب سوال قبلت که پرسیده بودی ماژولی میخواهی که TCP  رو به RS232 تبدیل کنه باید عرض کنم به این شکل موجود نیست .

من طرح  UML پروژه برادرم رو که بنا بود کنترل ربات رو Web-based  کنه پیاده سازی کردم و برنامه رو خودش نوشت و نمره خوبی هم گرفت . البته اونجا RS232  نبود اما فرق چندانی هم نداره ... بهر حال کار پیچیده ای نیست و فقط باید دستورات رو از یکطرف بگیری و برای طرف دیگه با استاندارد خودش ترجمه کنی .

( کلاسهای کراس پلت فرمی به نام Synapse هستند که هم روی  TCP  و هم ارتباطات سخت افزاری امکانات خوبی رو بهت میدن . نگاهی بهشون بکن ...)

موفق باشی

----------


## RezaBS

سلام
 اول تشکر میکنم که بالاخره به این تیتر هم نگاهی انداختید.
 دوم عذرخواهی منو به خاطر دیرشدن جوابیه بپذیرید.

 در جواب جناب SyntaxCheck خیلی ممنون دوست گرامی، مشکل کار با پورت ندارم. بحثی که مطرح کردم اصول کار بود، نه پیدا کردن ماژولهای پیش ساخته. باز هم از شما به خاطر توجهتون تشکر میکنم و ممنون میشم اگر چیزی پیدا کردید من و دیگران هم شریک باشیم.

 اما جناب اینپرایز،
 - در مورد علمی نبودن سوال، خوب از برنامه نویسهای به قول شما درپیتی انتظار سوال علمی نداشته باشید.
   البته سوال خیلی ساده مطرح شده بر عکس مفهومی که پشت قضیه هست، که البته دلیل داشت.
 تو کلاس خط استاد جلسه اول به شاگرداش گفت با یک مداد معمولی اسم خودشونو روی یک برگه (البته برگه معمولی) بنویسند. به محض اینکه شاگردانش قلم به دست گرفتن و اومدن شروع به نوشتن کنند گفت دیگه لازم نیست، فهمیدم قبلا چقدر آشنا هستید.
 این که چرا کلاس خط مثال زدم و استاد از کجا فهمید بماند ولی غرض اینکه اونی که داستانو بدونه من دهن باز نکرده میفهمه چی میخواستم بگم (و البته ممکنه بگه من نمیدونم برو از یکی دیگه بپرس! :wink:  :D بیشتر از این فکش باز نمیشد)
 در مورد کنترل کردن از مسیر پورت، کار با شبکه با پروتکلی مثل TCP/IP و مسا یلی که فرمودید هم چند تا کاری انجام دادم و یک چیزایی میدونم. نگران اون بخش نباشید.
 هدف عملیات کنترلی نیست و بحث ارتباط وب هم مطرح نیست.

 اجازه بدید یک کم دیگه مساله رو باز کنم (البته فقط یک کمی که گفتم).
 فرض کنید تعدادی مثلا همون روبوت که شما گفتید داشته باشیم. در محلهای متفاوت حتی شهر یا کشورهای مختلف.
 تنها مسیر سخت افزاری ارتباطی طراحی شده روی این دستگاهها یک پورت سریال هست که فرض کنیم همون RS232 استانداردمون باشه.
 حالا باز هم با مثال خودتون میریم جلو و میگیم میخوایم از طریق وب کنترلشون کنیم.
 در شبکه ما باید به هرکدوم از اینها یک IP نسبت بدیم و باقی داستان که مشخصه!
 امیدوارم مسیر فکریتون تغییر جهت داده باشه و متوجه سوالم شده باشید.
 باز هم از توجه و جوابتون تشکر میکنم.

 شاد و پیروز باشید...

----------


## Inprise

دوست عزیز

مطالبی که بنده عرض کردم رو مجددا بخون . احتمالا متوجه منظور بنده میشی مطلبی که شما میگی چیز خفنی نیست که بنده نفهمیده باشم . جواب همونی است که عرض شد ضمن اینکه تجهیزات سخت افزاری شما رو اینترفیس نرم افزاریتون کنترل میکنه که باید از طریق  Tcp/ip  در دسترس باشه . اینکه اون تجهیزات آی پی داشته باشند مفهوم نداره .

به عنوان مثال دستوری که شما برای ربات  A  میفرستید از طریق وب توسط نرم افزار کنترلر اون سیستم که به درخواستهای Tcp  گوش میده میرسه و اون هم دستورات لازم رو به سیستم میده .

----------


## RezaBS

سلام جناب اینپرایز، حالتون چطوره؟
 مطالبی که فرمودید دوباره بخونم همون اول سه بار خوندم بعد جواب دادم.
 راستش قبل از اینکه اینو بنویسم توی لغتنامه دنبال کلمه خفن  :shock: گشتم چیزی نبود، نمیدونم به چی میگید خفن ولی خوب این مطلب ساده داره برای چند تا شرکت درست حسابی تو دنیا نون در میاره، قیمتش هم بدک نیست ... :wink: 
 اینکه دستگاه میتونه آی پی داشته باشه یا نه، میتونه پسر خوب. اگر اولین بار بود که میخواست انجام بشه میشد گفت شاید شما درست بگید، اما این کار قبلا انجام شده و انصافا اصولش سخت نیست، مثل همین که ما وصل میشیم به اینترنت از طریق مودم.
 منظورتون از بحث روبوت را فهمیدم ولی بیاید اینجور به قضیه نگاه کنیم که قراره در لایه فیزیکی شبکه یک پورت سریال داشته باشیم.
 امیدوارم این بار قضیه واضحتر شده باشه.
 ممنون و موفق باشید...

----------


## Inprise

آقا رضا

این مسئله برای بنده ابهامی نداشت که واضح بشه . شما سوالی پرسیدید بنده جواب دادم . اما این مطلب که گفتی دستگاه آی پی داشته باشه رو ازت انتظار نداشتم ... تجهیزاتی مثل مالتی پورتها و ... که میبینی علی الظاهر همچین خصوصیتی دارن اون نرم افزاری که بنده خدمتت عرض کردم رو داخل خودشون دارن ... درست مثل DSL مودم هایکه اینترفیس  V.35  دارن و امثالهم .

همونطوری که دفعه اول عرض شد (!) بسته به شرایط مساله شما باید نرم افزاری طراحی کنید که جزئیات دستورات شما رو از شبکه بگیره  و ارسال کنه به بورد مورد نظر . این نرم افزار دقیقا همون حرف شما رو ( که البته معنی علمی نداره با عرض معذرت ... داشتن پورت سریال در لایه فیزیکی ...) انجام میده .

----------


## RezaBS

با سلام خدمت شما،
 باز هم تشکر به خاطر همراهی شما.
 اول بحث غیر علمی بودن داستان پورت سریال کاملا حق با شما و قبلا در مورد این مساله توضیح داده بودم. داستان دوم در مورد نرم افزاری که مجازی (اگر کلمه درستی باشه) کار میکنه هم کاملا صحیح.
 نکته سوم اینکه مساله پورت اشتباه بود یعنی اصولا معکوس گفتم. یک نگاه به ipac.com بنداز تا بعد ادامه بدم البته اگر دوست داری روی این مساله کار کنی، البته با چیزهایی که گفتی برات جدید نیستن ولی ضرر هم نداره.
 یک مساله مهم، سیستم عامل ویندوز در کار نیست یا اصولا سیستم عامل خاصی در نظر نگیر.
 نکته آخر اینکه فکر کنم بهتره با توافق شما بحث از این گروه خارج بشه، به نظر نمیاد خیلی برای کسی جالب باشه. شاید اونجوری بتونیم با هم کنار بیایم که بالاخره علمیه یا نه!
 ممنون و شاد باشید ...

----------


## Inprise

دوست عزیز

اگر بخواهی از دلفی برای این مقصود استفاده کنی با تقریب خوبی میتونی برنامه ای واحد رو روی هر دو تا محیط ویندوز و لینوکس ( ردهت - مندریک - سوزی - کورل - کالدرا ) داشته باشی . البته پیاده سازی کردنش با  C  یا حتی در صورت ضرورت  Assembly کار دشواری نیست .

اگر جزئیات طرح مورد نظرت رو بنویسی و البته محیط توسعه ای که قصد داری ازش استفاده کنی اونقدری که بتونم کمک خواهم کرد اگر ندونم میشه با همفکری مشکل رو حل کرد .

----------


## RezaBS

دوست گرامی،
 با توجه به اینکه قصد خارج کردن موضوع مورد بحث از سایت را دارم، خواهش می کنم یک آدرس e-mail در اختیارم بگذارید تا در مورد کار توضیحات لازم را بفرستم.
 در pm منتظر آدرس هستم.
 با تشکر فراوان ...

----------


## abdolkamal

سلام
من قصد جسارت ندارم ولی  ار اس 232 برای ارتباط سریال است نه موازی (پارالل)

----------


## RezaBS

شاید من یک مقدار بی دقتم، اگر لطف کنید آدرس بدید کجا رو نگاه کنیم که در مورد ارتباط موازی صحبت شده ممنون میشم!

----------

