How to convert four bytes into double ?

조회 수: 26 (최근 30일)
Parthiban
Parthiban 2022년 10월 14일
편집: Noah Prisament 2023년 7월 19일
Hai, my requirement is mentioned below;
i m using Ethernet TCP IP communication and handshake was done sucessfully.
Then am using animated line plot with "addpoints" command. In addpoints command -> it supports only "double" data type for X & Y Axis, but my input value for Y axis is four bytes / two bytes.
How to convert two or four byte into double ? any byte swap need to be done ? if yes means pls comment your suggestion !!
here i will add my Matlap code:
a = tcpclient('192.168.10.4',2000,'Timeout',10,'ConnectTimeout',30); %Establish Communication
Data = read(a,8,"uint8"); %Read Values from Server
figure
h = animatedline;
ax = gca; % Current Axes
ax.YGrid = 'on';
ax.YLim = [0 500];
stop = false;
startTime = datetime('now');
while ~stop
Data = read(a,8,"uint8"); %%%% i need to convert double
t = datetime('now') - startTime;
xx = datenum(t);
addpoints(h,xx,Data);

채택된 답변

Walter Roberson
Walter Roberson 2022년 10월 14일
편집: Walter Roberson 2022년 10월 14일
See typecast and also swapbytes (which you would need if the sender is sending "Big Endian")
However, is there any reason you do not simply do
Data = read(a, 1, "double");
possibly with a swapbytes() ?
  댓글 수: 5
Parthiban
Parthiban 2022년 10월 15일
my data format is LREAL / int16.
we are using TCP IP communication between PLC (Server) & MATLAB CLIENT and transfering data through byte format.
That byte transmission & Reception working fine only sir. i need to convert 4 bytes of uint8 (array 1*4) to one double values (Single value) and fetch those values to "Addpoints" command and to do live plotting
Walter Roberson
Walter Roberson 2022년 10월 15일
Could you give an example of the sequence of 4 bytes, and the corresponding numeric value that you expect?
Also I am still concerned about how sometimes you do not have exactly 4 bytes ? Please explain that further.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Noah Prisament
Noah Prisament 2023년 7월 19일
편집: Noah Prisament 2023년 7월 19일
The "animatedline" now supports all numeric datatypes along with datetimes and durations natively as of R2023a!
In order to plot your data on an "animatedline" you can now utilize the following syntax:
h = animatedline(NaT-NaT, uint8(NaN));
addpoints(h,xx,Data);
You also don't have to convert the duration to a datenum anymore either. Use NaT-NaT for for a duration and NaT for datetimes.
  댓글 수: 2
Walter Roberson
Walter Roberson 2023년 7월 19일
I suspect you intended
h = animatedline(NaT-NaT, uint8(NaN));
Noah Prisament
Noah Prisament 2023년 7월 19일
편집: Noah Prisament 2023년 7월 19일
I did, thank you for catching the typo! I am editing the original answer so that it isn't copied incorrectly.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by