目标:MATLAB编写服务器接收数据程序,LabVIEW采集发送数据,基于TCP/IP通信。
前提:
LabVIEW已经写好发送数据程序,采集的数据(双精度浮点型)通过强制类型转换函数转换成字符串并发送。
过程:
1、调通两边网络,LabVIEW所在电脑ip设置为192.168.0.10,端口号为8081(这个应该可以随便设,没关系),MATLAB所在电脑ip设置为192.168.0.110,端口号为8082,通过一根网线连接,先用网络调试助手分别进行连接通信,确保通信成功。
2、调通网络后,LabVIEW发送的数据能被MATLAB接收,只是不是原数据,需要将数据还原。具体对应关系如下图所示,我分了两种情况,即当发送数据为字符串时的接收情况以及发送数据为double型再通过强制类型转换函数转换成字符串发送时的接收情况。
3、将接收到的数据还原成双精度浮点数,涉及IEEE754浮点数和十进制数的转换,具体程序如下。
server = tcpserver("192.168.0.110",8082,"Timeout",20,"ConnectionChangedFcn",@connectionFcn);
pause(1);
if server.NumBytesAvailable>0
server.NumBytesAvailable
end
pause(1);
data=read(server,server.NumBytesAvailable);
a=length(data);
data1=[];
count=0;
if mod(a,8)==0
while count<a/8
b=dec2bin(data(count*8+1:count*8+8),8);
c=reshape(b',1,[]);
M=bin2dec(c(13:64));
E=bin2dec(c(2:12));
x=(-1)^c(1)*(1+M*2^(-52))*2^(E-1023);
data1(count+1)=x;
count=count+1;
end
end
disp(data1)
clear server
其中的函数模块程序如下。
function connectionFcn(src, ~)
if src.Connected
disp("Client connection accepted by server.")
end
end
之后就通信成功啦啦啦啦。
成功图:
OVER
PERFECT
zhq加油,你是最棒的,你一定行,你肯定行,你必须行!!!