1397-12-12 01:05 استفاده از ورودی در پورت COM به عنوان یک Event به جای کلیلک
عمار

 
سلام
یه برنامه برای دریافت ورودی از پورت COM ورودی می گیرد نوشته ام، برنامه رو با C# تقریبا نوشته ام و مشکلی نداره، از طرفی یک برنامه (ارسال اطلاعات) با C# دارم که با کلیلک اجرا می شود. میخواهم این دو برنامه را با هم ترکیب کنم تا زمانی که از پورت COM ورودی را دریافت کردم ( یعنی وقتی یک پنج ولت به پورت com اعمال می کنم) برنامه ارسال اتواتیک اجرا شود.
یعنی به جای کلیلک کردن با گرفتن اطلاعات از پورت com اجرا شود.
البته خودم یه فکرهایی کردم ولی نمیدونم چه جوری اجراش کنم، خودم فکر کردم اگه یکif یا WHile بذارم و با if اگر پورت com وردوی گرفت اجرا شود و تا زمانی که ورودی نگرفتن اجرا نشود یا اینکه با While بگم تا زمانی یک ورودی نگرفتی پورت com اجرا نشود.
اگر خواستید کدها رو ارسال کنم.
از راهنمایی تون ممنون می شوم.
1397-12-12 09:48
حاجی شریفی
مؤسس سایت
 
سلام
برای ارتباط با پورت سریال COM باید از کلاس SerialPort استفاده کنید، این کلاس یک رویداد/Event به نام DataReceived دارد که رسیدن اطلاعات جدید را اعلان میکند و میتوان برای این رویداد کدنوشت.

سمت رایانه کدی شبیه این خواهید داشت:
private  System.IO.Ports.SerialPort m_Port;

private void OnOpenSerialPort()
{
this .m_Port = new System.IO.Ports.SerialPort( "COM5" ) ;
//this.m_Port.BaudRate = 9600;
//this.m_Port.Parity = System.IO.Ports.Parity.None;
//this.m_Port.StopBits = System.IO.Ports.StopBits.None;
//this.m_Port.Handshake = System.IO.Ports.Handshake.None;
//this.m_Port.Encoding = System.Text.Encoding.ASCII;

this .m_Port.DataReceived += this .OnDataReceived;
this .m_Port.Open();
}

private void OnCloseSerialPort()
{
this .m_Port.DataReceived -= this .OnDataReceived;
this .m_Port.Dispose();
}

private void OnDataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//byte[] buffer = new byte[1024];
//this.m_Port.Read(buffer, 0, buffer.Length);
//OR...
//string strData = this.m_Port.ReadLine();
}


مطمئن نیستم ولی در سمت الکترونیکی کارتان، از متن سوال تان چنین برداشت هایی میتواند کرد که میخواهید چیزی شبیه یک کلید/Switch به درگاه COM متصل کنید و با آن به رایانه فرمان دهید (؟!)
فقط یادآوری میکنم که COM در درگاه ارتباط سریال/Serial است.
این یک درگاه موازی/Parallel نیست و شما همینطور و بدون وجود مدار کمکی نمیتوانید یک کلید یا رله و... را به آن متصل کنید.


موفق باشید.