اطلاعیه

Collapse
No announcement yet.

usart

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    usart

    سلام

    راه تفکیک اطلاعاتی که توسط usart دریافت شذه چیست؟
    منظورم این هست که اگر اطلاعات دریافتی شامل 9 عدد باشد چه راهی برای جدا کردن و خواندن 2 عدد اول وجود دارد؟
    برنامه با code vision می باشد.

    با تشکر

    #2
    پاسخ : usart

    ببین آقا جون!
    وقتی شما دارین بین اطلاعات دریافتی از سریال تفکیک قایل میشی یعنی میگی بایت دوم و یا سوم یعنی بایت اول در هر فاز ارسال اطلاعات مشخصه. و این یعنی از یک قالب استفاده میکنی.
    غیر از این مسئله چیزی که روی سریال ارسال و دریافت میشه فقط یک سری بایت هست. ولی در هنگام مدیریت اطلاعات اینها فقط بایت نیستن. ممکنه انواع دیگه ای هم باشن. و اونوقت شما باید برای کار درست کدات از تغییر دید کامپایلر به این اطلاعات استفاده کنی. که البته این کار با cast کردن متفاوته.
    مثلا فرض کن که شما دو عدد از نوع int فرستادی که میشه جمعا 4 بایت و اطلاعات دریافتی در یک آرایه مثل data ذخیره شده. یک کار راحت میتونه استفاده از کدی مثل این باشه:

    struct my_data
    {
    int item1;
    int item2;
    };

    ....

    int n = ((struct my_data *)data)->item1;


    راه ساده تری هم بود ولی اگر داده های ارسالی ات نوعش با هم متفاوت بود یه کمی دردسر داشت. مثلا فرض کن دو عدد صحیح و یک اعشاری و یک رشته ماکزیمم 9 کاراکتری داشتیم و در همون آرایه data وجود داشتن:


    struct my_data2
    {
    int inum1;
    float fnum;
    int inum2;
    char str[10];
    };

    ...

    float f = ((struct my_data2 *)data)->fnum;



    دیدگاه

    لطفا صبر کنید...
    X