Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在MatlabGUI中将串口数据保存到数组中?_Arrays_Matlab_User Interface_Serial Port - Fatal编程技术网

Arrays 如何在MatlabGUI中将串口数据保存到数组中?

Arrays 如何在MatlabGUI中将串口数据保存到数组中?,arrays,matlab,user-interface,serial-port,Arrays,Matlab,User Interface,Serial Port,我想每隔0.1s读取一个serail端口,并将传入的数据附加到数组中,这次我可以显示数据,但数组似乎只存储最新的数据。谁能告诉我为什么?谢谢。 下面是一些代码: function wtsMat_OpeningFcn(hObject, eventdata, handles, varargin) ..... %%tact is the array to store data tact=ones(1,84); handles.tact=tact; % Update handles structure

我想每隔0.1s读取一个serail端口,并将传入的数据附加到数组中,这次我可以显示数据,但数组似乎只存储最新的数据。谁能告诉我为什么?谢谢。 下面是一些代码:

function wtsMat_OpeningFcn(hObject, eventdata, handles, varargin)
.....
%%tact is the array to store data
tact=ones(1,84);
handles.tact=tact;
% Update handles structure
guidata(hObject, handles);
以下是scom的设置

scom=serial(com_cur,'BaudRate',baud_curNum,'Parity','none','DataBits',8,'StopBits',1,...
    'InputBufferSize',1000,...
    'TimeOut',1,...
    'TimerPeriod',0.1,...
    'timerfcn',{@mycallback,handles});
fopen(scom);
handles.scom=scom;
guidata(hObject,handles);
下面是mycallback函数

function mycallback(scom,BytsAvailable,handles)
%start single frame acquisition
showData=ones(84,1);
showWin=ones(14,6);
%%get previous data from handles
tact=handles.tact;
fwrite(scom,uint8(hex2dec(['AA';'AA';'AA';'20';'01';'00';'00';'8F';'83'])));
myData = fread(scom,183);%read raw data from sensor
for i=1:84
    showData(i,1)=myData(13+i*2)*16*16+myData(12+i*2);
end
%%append to tact array
tact=[tact;showData'];
handles.tact=tact;
....
关闭scom时保存tact

function pb_close_Callback(hObject, eventdata, handles)
% hObject    handle to pb_close (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
scom=handles.scom;
%stop acquising
fwrite(scom,uint8(hex2dec(['AA';'AA';'AA';'22';'00';'00';'0E';'76'])));
fclose(scom);
tact=handles.tact;
save('tact.mat','tact');

尝试创建一个缓冲区,并在每次迭代时将新数据保存在最后一个位置

buf_len = 100;
index = 1:buf_len;
%Initialize array
arrayOfData = zeros(buf_len,1);

% get Data here. Let's say the new value is theta

arrayOfData = [ arrayOfData (2:end) ; theta ];

plot(index,Tdata,'r','LineWidth',2);