سلام
من میخوام از وقفه در ارتباط سریال استفاده کنم.
اما اینجا یه مشکلی دارم، توی تابع وقفه کد زیر رو گذاشتم که بافر رو بخونم، اما دیتاها مشکل دارن.
میکرویی که دیتا ارسال می کنه بعد از هر ارسال یه \n میفرسته، حالا من بافر رو میخونم این \n هم اعمال میشه و توی ال سی دی یه خط میره پایین، اومدم دوباره نوشتم اگه به /۰ که انتهای رشته است رسیدی دیگه چیزی تو متغییر نزار.
این بار در دریافت اول درسته، اما در ارسال دوم ، اون دیتاهایی رو که از بافر نخوندم میاره اول دریافت دوم میزاره، یعنی دریافت دومم شامل اول \n و بعدش کدی که دریافت کردم هستش.
الان دوباره اومدم بعد از این که دیتا ها رو خوندم دوباره با دستور زیر بافر رو خالی کردم، ولی بازم کار نمی کنه.
جالب اینه که من چون دیتاهای دریافتی همشون 10 کاراکتری هستن اومدم دستور اول رو اینطوری نوشتم:
ولی بازم درست نشد.
1- کسی میدونه مشکل از چیه؟
2- یه برنامه نمونه برای دریافت رشته از وقفه سریال، اگه ممکنه.
من میخوام از وقفه در ارتباط سریال استفاده کنم.
اما اینجا یه مشکلی دارم، توی تابع وقفه کد زیر رو گذاشتم که بافر رو بخونم، اما دیتاها مشکل دارن.
کد:
for (int s=0;s<rx_wr_index;s++)str[s]=rx_buffer[s];
این بار در دریافت اول درسته، اما در ارسال دوم ، اون دیتاهایی رو که از بافر نخوندم میاره اول دریافت دوم میزاره، یعنی دریافت دومم شامل اول \n و بعدش کدی که دریافت کردم هستش.
الان دوباره اومدم بعد از این که دیتا ها رو خوندم دوباره با دستور زیر بافر رو خالی کردم، ولی بازم کار نمی کنه.
کد:
for (s=0;s<256;s++)rx_buffer[s]=NULL;
کد:
for (int s=0;s<10;s++)str[s]=rx_buffer[s];
1- کسی میدونه مشکل از چیه؟
2- یه برنامه نمونه برای دریافت رشته از وقفه سریال، اگه ممکنه.