PDA

View Full Version : حذف داده های بافر پورت سریال



mahdi bg
چهارشنبه 14 مهر 1389, 22:40 عصر
سلام
چطوری می تونم قسمتی از یافر سریال پورت رو حذف کنم
مثلا از 10 بایتی که رسیده 5 تای اول رو حذف کنم

ممنون

smt1383
پنج شنبه 15 مهر 1389, 00:05 صبح
باید اول دیتای رسیده را مثلاً با دستور ReadExisting بخونی و در یک متغیر string بریزی، بعد هر قسمت از این دیتا را که می خواهی استخراج کنی:


string s,myData;
s=SerialPort1.ReadExisting();
myData=s.SubString(5,5);

mahdi bg
پنج شنبه 15 مهر 1389, 14:16 عصر
سل
یک مشکل دارم برای این کار

یک event برای زمانی که داده از پورت کامل رسید


SP = new SerialPort();
SP.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort SP = (SerialPort)sender;
int CountDataInPort = SP.BytesToRead;
...
SP.DiscardInBuffer();
{


توی کد بالا
int CountDataInPort = SP.BytesToRead;
تو پورت سریال 8 تا بایت فرستاده میشه ، اما بعضی مواقع یکم فاصله بین این می افته مثلا دو تا 8 بایت دریافت میشه.
چکار کنم تا وقتی که هنوز داده داره می آد برنامه صبر کنه؟
(البته ممکنه نویز باشه و حقیقتا 4 تا بایت باشه)

بالای اون خط چی بنویسم ، تا مطمئن شم داده ای دیگه وجچود ندارد؟

ممنون