And this is the Matlab code:
%% PNET EXAMPLE
clear; clc;
% Server machine (FPGA)
serverAddress = '192.168.1.234';
portNumber = 30;
NSAMPLES = 1170;
BUFFERSIZE = 9000;
% Creates tcp/ip connection to the specified 'hostname' and port
tcpConn = pnet('tcpconnect',serverAddress,portNumber );
pause(0.1);
% specifies how long read and listen commands blocks before it timeouts.
pnet(tcpConn,'setreadtimeout',0.25);
pnet(tcpConn,'setwritetimeout',0.1);
disp('Connection established')
%% Read elements at the beginning of connection to flush buffer
flush = pnet(tcpConn,'read',BUFFERSIZE,'uint8');
% Show flushed data
disp(char(flush))
%% Write commands '0\n\r' to '6\n\r'
% for iComm = 0:6,
% pnet(tcpConn,'write',uint8());
% % Receive 35+2 characters from FPGA
% textReceived = uint8(swapbytes(pnet(tcpConn,'read',,'uint8')));
% disp(char(textReceived'))
% end
%% Write command to send A-line 'A\n\r'
tic
nLinesPerFrame = 400;
nFrames = 1;
nAcqSamples = nLinesPerFrame*nFrames;
rawData = zeros(,'int16');
for iFrames = 1:nFrames,
for iLines = 1:nLinesPerFrame,
pnet(tcpConn,'write',uint8());
% Reads an array of NSAMPLES elements from a connection
rawData(:,iLines,iFrames) = pnet(tcpConn,'read',,'int16');
end
end
elapsedTime = toc;
disp()
fprintf('Estimated speed %.2f lines/sec\n',nAcqSamples/elapsedTime)
% Reads an array of elements from a connection
% reception = uint32(swapbytes(pnet(tcpConn,'read',,'uint32')));
%% Display previously acquired data
figure
ylim()
for iFrames = 1:size(rawData,3),
for iLines = 1:size(rawData,2),
plot(squeeze(rawData(:,iLines,iFrames)))
ylim()
title(sprintf('Slow Transfer. Frame %d. Line %d',iFrames,iLines))
pause(0.01);
end
end
%% Continuous acquisition 'C\n\r'
% DOES NOT WORK WELL!!!! CORRUPTED DATA!!!
nLinesPerFrame = 400;
nFrames = 25;
nAcqSamples = nLinesPerFrame*nFrames;
rawDataCont = zeros(,'int16');
pnet(tcpConn,'write',uint8());
tic
for iFrames = 1:nFrames,
for iLines = 1:nLinesPerFrame,
% Reads an array of NSAMPLES elements from a connection
% dataReceived = pnet(tcpConn,'read',,'int16');
rawDataCont(:,iLines,iFrames) = pnet(tcpConn,'read',,'int16');
end
end
elapsedTime = toc;
disp()
fprintf('Estimated speed: %.2f lines/sec\n',nAcqSamples/elapsedTime)
%% Display data acquired continuously
figure
ylim()
for iFrames = 1:size(rawDataCont,3),
for iLines = 1:nLinesPerFrame,
plot(squeeze(rawDataCont(:,iLines,iFrames)))
title(sprintf('Continuous Transfer. Frame %d. Line %d',iFrames,iLines))
end
end
%% Closes a tcpconnection (send first a 'Q\n\r')
pnet(tcpConn,'write',);
% Receive 35+2 characters from FPGA
textReceived = uint8(swapbytes(pnet(tcpConn,'read',,'uint8')));
disp(char(textReceived'))
% pause(0.1);
pnet(tcpConn,'close')
disp('Connection closed')