فرض کنید بوسیله مدباس یک عددی مثلا 36.2 از نوع floating را دریافت کرده و به صورت 2 عدد Hex در Word زیر ذخیره می کنیم
Word0=0xcccd
Word1=0x4210
بزای اینکه عدد float معادل 36.2 را از طریق این 2 رجیستر word بدست بیاوریم باید چه کار کنیم؟
ممنون
تبدیل 2 عدد Hex به float
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: تبدیل 2 عدد Hex به float
با سلام
وقتی عدد اعشاری float رو میخونید باید 4 بایت دیتا رو به Real تبدیل کنید
برای این کار دو راه دارید. یکی استفاده از اینستراکشن DESERIALIZE و دوم تغییر تنظیمات MB_MASTER. برای کاربرد شما راه دوم ساده تر هست
طبق تصویر زیر وقتی شما R/W32 رو روی مقدار True قرار بدید، اینستراکشن MB_MASTER به جای 16 بیت، 32 بیت دیتا را از Slave برداشت میکنه. دقت کنید که نوع بافر رو باید مناسب با نوع خواندن تنظیم کنید. مثلا وقتی قصد دارید به صورت 32 بیتی دیتا برداشت کنید (R/W32=True) باید بافر رو یک آرایه از DWORD تعریف کنید. DWORD همان Double Word هست که سایزش 32 بیت میشه.
در مرحله بعد باید المان اول بافر DwordBuffer[0] را به Real تبدیل کنید.
وقتی عدد اعشاری float رو میخونید باید 4 بایت دیتا رو به Real تبدیل کنید
برای این کار دو راه دارید. یکی استفاده از اینستراکشن DESERIALIZE و دوم تغییر تنظیمات MB_MASTER. برای کاربرد شما راه دوم ساده تر هست
طبق تصویر زیر وقتی شما R/W32 رو روی مقدار True قرار بدید، اینستراکشن MB_MASTER به جای 16 بیت، 32 بیت دیتا را از Slave برداشت میکنه. دقت کنید که نوع بافر رو باید مناسب با نوع خواندن تنظیم کنید. مثلا وقتی قصد دارید به صورت 32 بیتی دیتا برداشت کنید (R/W32=True) باید بافر رو یک آرایه از DWORD تعریف کنید. DWORD همان Double Word هست که سایزش 32 بیت میشه.
در مرحله بعد باید المان اول بافر DwordBuffer[0] را به Real تبدیل کنید.
- پیوستها
-
- Capture.PNG
- (52.04 KiB) هنوز دانلود نشده
Re: تبدیل 2 عدد Hex به float
من با راهنمایی شمابوسیله Dword مشکلم حل شد
ولی برای swap کردن یا استفاده از حالتهای مختلف float مثل big endian یا... راهنمایی بفرمایید
ممنون
ولی برای swap کردن یا استفاده از حالتهای مختلف float مثل big endian یا... راهنمایی بفرمایید
ممنون
- mahdi.faani
- مدیر انجمن
- پست: 99
- تاریخ عضویت: 14 می 2023, 14:39
- محل اقامت: Tehran
- تماس:
Re: تبدیل 2 عدد Hex به float
برای swap کردن میتوانید از اینستراکشن SWAP استفاده کنید
این اینستراکشن جای بایت ها را تغییر میدهد تا امکان تبدیل big endian به little endian یا برعکس را برای شما فراهم کند.
این اینستراکشن جای بایت ها را تغییر میدهد تا امکان تبدیل big endian به little endian یا برعکس را برای شما فراهم کند.