اطلاعیه

Collapse
No announcement yet.

درخواست راهنمایی برای ارسال یک متغیر 64 بیتی با دو متغیر 32 بیتی

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

    درخواست راهنمایی برای ارسال یک متغیر 64 بیتی با دو متغیر 32 بیتی

    چطور میتونم یک متغیر 64 بیتی رو به دو متغیر 32 بیتی برای ارسال در بستر مدباس در کدویژن تبدیل کنم. میخوام اعدادی با حداکثر مقدار 999,999,999 رو با دوتا متغیر unsigned int ارسال کنم. لطفا اگه نمونه کد دارید برام بذارید. سپاس از راهنمایی*ها

    #2
    پاسخ : درخواست راهنمایی برای ارسال یک متغیر 64 بیتی با دو متغیر 32 بیتی

    نوشته اصلی توسط soleimani_m نمایش پست ها
    چطور میتونم یک متغیر 64 بیتی رو به دو متغیر 32 بیتی برای ارسال در بستر مدباس در کدویژن تبدیل کنم. میخوام اعدادی با حداکثر مقدار 999,999,999 رو با دوتا متغیر unsigned int ارسال کنم. لطفا اگه نمونه کد دارید برام بذارید. سپاس از راهنمایی*ها
    سلام
    دو مورد وجود داره که بهتره بهشون توجه داشته باشید. اول این که رجیسترهای مدباس 16 بیتی هستند و نه 32 بیتی. دوم هم اینکه تا جایی که من اطلاع دارم کدویژن متغیر 64 بیتی ساپورت نمیکنه!
    فرض بگیریم کدویژن 64 بیتی ساپورت کنه و مدباس هم 16 بیتی باشه. با این کد میتونید این کار رو انجام بدید:

    uint64_t MyU64Data;
    uint16_t ModbusReg0;
    uint16_t ModbusReg1;
    uint16_t ModbusReg2;
    uint16_t ModbusReg3;


    typedef union u64toU16_u
    {
    uint64_t u64Data;
    uint16_t u16Data[4];
    } u64toU16_t;
    u64toU16_t u64toU16;


    u64toU16.u64Data = MyU64Data;
    ModbusReg0 = u64toU16.u16Data[0];
    ModbusReg1 = u64toU16.u16Data[1];
    ModbusReg2 = u64toU16.u16Data[2];
    ModbusReg3 = u64toU16.u16Data[3];

    فقط باید حتما کتابخونه stdint.h رو به پروژه اضافه کنید.

    دیدگاه

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