PDA

View Full Version : سوال: خواندن همزمان از سه پورت RS232



ehsanara
یک شنبه 12 دی 1389, 12:08 عصر
سلام دوستان
چطور میتونم همزمان از 3پورت RS232 اطلاعات بخونم؟
چه کدی باید بنویسم که بتونم همزمان هر رو رو معرفی کنم و ورودی هاش رو بخونم؟
ممنون میشم راهنماییم کنید

unknown.unforgiven
یک شنبه 12 دی 1389, 12:15 عصر
سلام
3 تا پورت سریال بزار تو برنامت (با property های مختلف). بعد هر جای برنامه که خواستی هر 3 تا رو بخون.


serialPort1.ReadExisting();
serialPort2.ReadExisting();
serialPort3.ReadExisting();

ehsanara
یک شنبه 12 دی 1389, 14:16 عصر
مرسی ولی میشه بیشتر توضیح بدین
من این Propertyها رو کجا باید تعریف کنم؟
من با یه پورت تعریف کردم ولی این پیغام رو میده:



The Port is Closed
یه بار میزنه
The port is already Open


اینم کد


private void Form1_Load(object sender, EventArgs e)
{
if (comPort3.IsOpen)
comPort3.Close();
else
{
comPort3.BaudRate = 4800;
comPort3.Parity = Parity.None;
comPort3.RtsEnable = true;
comPort3.StopBits = StopBits.One;
comPort3.DataBits = 8;
comPort3.ReadBufferSize = 1000;
comPort3.ReadTimeout = 1000;
comPort3.WriteBufferSize = 1000;
comPort3.WriteTimeout = 1000;
comPort3.PortName = "COM3";
comPort3.ReceivedBytesThreshold = 1;
try
{
// Open the port
comPort3.Open();
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message);
}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
try
{
var va1 = comPort3.ReadExisting();
label3.Text = va1;
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex.Message);
}
}


اگه با یکی جواب بگیرم تنظمش برا بقیه سخت نیست

unknown.unforgiven
یک شنبه 12 دی 1389, 16:15 عصر
اون تیکه ای که try نوشتی رو پاک کن به جاش این رو بذار


if (!comPort3.IsOpen)
comPort3.Open();

و یه نکته دیگه، از component ها سریال پورت رو بنداز تو برنامت (که فکر کنم این کار رو کردی) و همون جا قبل از این که کامپایل کنی ویژگی ها رو بهش بده. اگه متوجه نشدی بگو بیشتر توضیح بدم

ehsanara
یک شنبه 12 دی 1389, 23:06 عصر
مرسی از راهنماییتون
منظورتون قبل از کامپایل چه زمانیه؟
یعنی Propertyها رو کجای Code بزارم؟

arya1348
یک شنبه 12 دی 1389, 23:25 عصر
سلام
به نظرم میاد شما از کنترل Serial port به تعداد 3 عدد باید استفاده کنی .
این کنترول رو میتونی تو لیست کامپوننتهای موجود پیدا کنی. (تو لیست کنترول ها رو نگاه کن )
بعد اسم 3 تا کنترول رو به serial port 1 تا serial port 3 تغییر بده.
حالا خصوصیاشون رو می تونی به راحتی تغییر بدی.

ehsanara
یک شنبه 12 دی 1389, 23:43 عصر
من این رو برا بالا تعریف کردم


SerialPort comPort3 = new SerialPort();


مشکل من اینه که با همین یکی هم نمیخونه اگه این یکی درست شه با دوتای دیگه مشکلی ندارم
چون زمانی که با Hyper Terminal تست می کنم ورودی رو میگیرم

unknown.unforgiven
دوشنبه 13 دی 1389, 10:28 صبح
من این رو برا بالا تعریف کردم


SerialPort comPort3 = new SerialPort();


مشکل من اینه که با همین یکی هم نمیخونه اگه این یکی درست شه با دوتای دیگه مشکلی ندارم
چون زمانی که با Hyper Terminal تست می کنم ورودی رو میگیرم

از بخش component ها serialport رو بذار تو برنامت. منظورم از بخش componentها اون جایی که button, textbox و ... رو انتخاب میکنی و میندازی تو برنامه. توی اونجا دنبال serialport بگرد، پیداش که کردی سه تا تو form بنداز. فقط حواست باشه که به صورت فیزیکی وارد فرم نمیشن، پایین فرم نشونشون میده. وقتی رو هر کدوم کلیک بکنی برات properties و eventها رو همون جوری که واسه component های دیگه نشون میده، نشون میده. تو برنامه ای که الآن نوشتی پورت سریال رو دستی تعریف کردی، اگه از componentها بیاریش دیگه احتیاجی به تعریف کردنش نیست. باز اگه سوالی بود در خدمتم