دیتاماینینگ یار

کار با پورت سریال یا کام (COM) در سی شارپ

اصول تبادل داده در پورت سریال

در تبادل داده دو روش را به کار می بریم که یکی روش همزمان و دیگری غیر همزمان است . روش همزمان هر بار یک بلوک از داده را انتقال می دهد درحالی که روش غیر همزمان هر بار یک بایت را منتقل می سازد .

می توان برای پیاده کردن هر یک از دو روش فوق ، نرم افزاری تهیه کرد ، ولی برنامه ها می توانند طولانی و خسته کننده باشند . به این دلیل ، تراشه های IC خاصی به وسیله سازندگان متعددی برای تبادل سریال داده ساخته شده است . این تراشه ها عموماً UART ( فرستنده – گیرنده غیر همزمان یونیورسال ) و USART(  فرستنده گیرنده همزمان – غیر همزمان یونیورسال ) خوانده می شوند.

انواع ارسال ها بین گیرنده و فرستنده

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

تبادل سریال غیر همزمان و بسته بندی داده

به هنگام انتقال سریال، داده رسیده به مقصد از ۰ و ۱ تشکیل شده بنابر این تشخیص آن مشکل است مگر این که فرستنده و گیرنده بر اساس مجموعه قوانینی با یکدیگر توافق داشته باشند. این قوانین که به آن پروتکل می گویند،چگونگی بسته بندی داده،تعداد بیت های تشکیل دهنده کاراکتر و زمان ابتدا و انتهای داده را مشخص می سازد.

بیت های شروع و ختم

 تبادل سریال غیر همزمان داده به طور گسترده ای برای ارسال های مبتنی بر کاراکتر مورد استفاده قرار می گیرند، ولی انتقال داده مبتنی بر بلوک از روش همزمان استفاده می نماید.در روش غیر همزمان هر کاراکتر بیت های شروع و ختم قرار می گردند.به این عمل بسته بندی می گویند.در روش بسته بندی داده برای تبادل غیر همزمان ،داده مانند کاراکتر های اسکی،بین بیت های شروع و ختم بسته بندی می شوند.بیت شروع همیشه یک بیت است ولی ختم می تواند یک یا چند بیت باشد.بیت شروع همیشه ۰ ولی بیت های ختم همواره ۱ است.

  1. DTR ( آمادگی پایانه داده)(Data Terminal Ready) وقتی که پایانه ( یا پورت com در pc روشن شود.پس از یک سری تست های درونی،pc سیگنال DTR را به بیرون ارسال می نماید تا آمادگی خود را برای تبادل داده اعلام نماید.اگر شکلی در پورت com وجود داشته باشد این سگنال فعال نمی گردد. این سیگنال ،یک سیگنال فعال یا بین بوده و به مودم اطلاع می دهد که آماده است.این پایه یک خروجی از DTE (پورت com در pc) در یک ورودی به مودم است.
  2.  DSR ( آماده دریافت داده یا مجموعه داده آماده)( Data Set Ready)وقتی که یک DCE(مودم) روشن شود و شروع به تست خود کند یک DSR را صادر می نماید تا آمادگی تبادل اطلاعات را اعلام نماید.بنابراین سیگنال مذکور یک خروجی از مودم(DCE) ورودی به(DTE)PC است.این هم یک سیگنال فعال پایین است.اگر به هر دلیلی قادر به ارتباط با تلفن نباشد،این سینگال غیر فعال شده و به PC (پایانه) عدم آمادگی ارسال و دریافت داده را اعلام می نماید.
  3. RTS ( تقاضای ارسال) وقتی وسیله DTE( مانند PC) دارای بایتی برای ارسال است.سیگنال RTC را ایجاد می کندتا به مودم داشتن یک بایت داده برای ارسال را اعلام نماید.RTC یک خروجی فعال پایین از DTE و ورودی به مودم است.
  4.  CTS ( خالی برای ارسال) در پاسخ به RTS وقتی که مودم برای ذخیره داده دریافتی دارد،سیگنالCTS را به DTE(PC) می فرستند تا آمادگی خود برای دریافت در آن لحظه به اطلاع برساند.
  5.  CD یا DCD (تشخیص عامل،یا تشخیص حامل داده) مودم،سیگنال سیگنال DCD را برای اطلاع DTE( PC) ارسال می دارد تا تشخیص حامل معتبر در ارتباط بین خود و دیگر مودم ها را اعلام نماید.بنابراین DCD یک خروجی از مودم و ورودی به یک (DTE(PC است.
  6. RI ( اعلام زنگ) (RING INDICATOR) این خروجی از مودم ورودی به (DTE(PC ،زنگ زدن تلفن را خبر می دهد.این سیگنال با صدای زنگ به طور همزمان خاموش و روشن می شود. از ۶ سیگنال دست دهی،PC سوال پاسخگوی به تلفن باشد،این سیگنال می تواند بکار رود.

Name space = System.IO.Ports

برای ارتباط بین دو کامپیوتر باید از استانداردی خاص به عنوان مثال RS 232 C استفاده کرد.

شیوه ارتباط  :‌ Null modem , Hand shaking , flow control

مراحل کار

SerialPort ccom = new SerialPort();

ccom.BaudRate = 9600; //نرخ نقل و انتقال داده ها

ccom.DataBits = 8; // تعداد بیت هایی که یک پکیج می شود

ccom.PortName = “COM1”; // تعیین نام پرت

 

ccom.Open();

برای آگاهی از پورت های سریال در سیستم می توان از دستور زیر استفاده کرد:

foreach (string str in SerialPort.GetPortNames())     

MessageBox.Show(str.ToString());

 

string msg = “Hello”;

ccom.Write(msg);

 

byte[] readbytes = new byte[ccom.BytesToRead];
ccom.Read(readbytes, 0, readbytes.Length);

Resource

۱-      Topan dantre a  web developer , a member of www.CodeProject.com

۲-     Serial Port Communication in C# , Reza mahdi Hadi, addr: http://pro-programming.com

۳-     http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

 

 

پورت سریال در سی شارپ / کار با پورت سریال یا کام (COM) در سی شارپ / پورت سریال (COM or Comunication Serial Port)

ارتباط و مشاوره با شما ۰۹۳۶۷۹۳۸۰۱۸ در واتس اپ

دیدگاه‌ها (1)

*
*


پاسخ من را به ایمیلم ارسال کن

    زهرا مهمان 4 مرداد 1396 پاسخ

    عالی بود ممنون

error: با عرض پوزش؛ لطفا از مطالعه مطالب لذت ببرید.