پورت سریال و مشکل همزمانی
سلام
وقت بخیر
با یه دستگاه دارم کار می کنم که با پورت سریال تو سی شارپ بهش کانکت میشم
من باید یه آرایه از نوع بایت براش بفرستم تا اون یه جواب به من بده ، بعد با توجه به جوابی که داده یه دستور دیگه براش بفرستم تا جواب نهایی رو بگیرم(این کار باید بصورت متناوب مثلا در هر 30 ثانیه تکرار بشه) به اینصورت:
کد:
void timer_tick()
{
//send command1
}
void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (Flag)
{
//read data
return;
}
if (serialPort.ReadExisting().Length == 150)
{
//do code
//if return data is true send command2
//flag=true
//return
}
}
همیشه بار اول درست اطلاعات برگشتی از دستور اول و دوم درست هست و دستور اول رو هم هر بار درست میفرسته اما اطلاعات دستور دوم رو نمیتونه درست برگردونه و ارورهایی مثل port openو access denied و ..
میده، من فکر میکنم که به خاطر این هست که برنامه به دوتا نخ تبدیل میشه و ما هم دوتا دستور داریم و این باعث میشه که مثلا وقتی تیک تایمر اتفاق میفته همون لحظه پورت توسط ایونت دیتارسیو داره استفاده میشه و اطلاعات برگشتی مطلوب ما نیست
ممنون از توجهتون