背景数据采集2021年混乱GUI

2视图(30天)
康纳亨德森
康纳亨德森 2021年8月26日
你好所有的,
我一直试图让一个单独的图窗口和文本显示不同的单词partisipant而采集获得数据的同时partisipant窗口的显示。当我运行GUI的收购数据1秒后停止,或者它将运行直到完成采访工作的持续时间。我也有问题让log_DataLive函数获取超过200细胞的数据,如果你注意到一些简单的,我错过了与细胞的数据让我知道。否则,在后台完成收购现在最大的问题。我看过的文档背景acquisitiuon,但我最有可能丢失的东西会让它工作。
%代码显示的图
app.d = DAQ_Acquisition (app.UIAxes app.UIAxes2、app.UIAxes4 app.UIAxes4_2);
Partisipant_Screen (app.d 14)
%数据采集
%处理数据
流(“取得已终止,% d扫描增大\ n”, app.d.NumScansAcquired);
fid5 = fopen (‘log.txt’,‘r’);
fid6 = fopen (‘log_1.txt’,‘r’);
fid7 = fopen (‘log_2.txt’,‘r’);
fid8 = fopen (‘log_3.txt’,‘r’);
[app.data_1 ~] =从文件中读(fid5“浮动”);% var
[app.data_2 ~] =从文件中读(fid6“浮动”);% var
[app.data_3 ~] =从文件中读(fid7“浮动”);% var
[app.data_4 ~] =从文件中读(fid8“浮动”);% var
文件关闭(fid5);
文件关闭(fid6);
文件关闭(fid7);
文件关闭(fid8);
Time_Data_1 = 0 (28000 1);% var
Sense_Data_1 = 0 (28000 1);% var
Time_Data_2 = 0 (28000 1);% var
Sense_Data_2 = 0 (28000 1);% var
Time_Data_3 = 0 (28000 1);% var
Sense_Data_3 = 0 (28000 1);% var
Time_Data_4 = 0 (28000 1);% var
Sense_Data_4 = 0 (28000 1);% var
为n = 1:140
m = 1:200
如果m < = 100
Time_Data_1 ((200 * (n - 1)) + m:) = app.data_1 ((200 * (n - 1)) + m:);
Time_Data_2 ((200 * (n - 1)) + m:) = app.data_2 ((200 * (n - 1)) + m:);
Time_Data_3 ((200 * (n - 1)) + m:) = app.data_3 ((200 * (n - 1)) + m:);
Time_Data_4 ((200 * (n - 1)) + m:) = app.data_4 ((200 * (n - 1)) + m:);
elseif m < = 200
Sense_Data_1 ((200 * (n - 1)) + m:) = app.data_1 ((200 * (n - 1)) + m:);
Sense_Data_2 ((200 * (n - 1)) + m:) = app.data_2 ((200 * (n - 1)) + m:);
Sense_Data_3 ((200 * (n - 1)) + m:) = app.data_3 ((200 * (n - 1)) + m:);
Sense_Data_4 ((200 * (n - 1)) + m:) = app.data_4 ((200 * (n - 1)) + m:);
结束
结束
结束
Time_Data_1 (Time_Data_1 = = 0) = [];
Sense_Data_1 (Sense_Data_1 = = 0) = [];
Time_Data_2 (Time_Data_2 = = 0) = [];
Sense_Data_2 (Sense_Data_2 = = 0) = [];
Time_Data_3 (Time_Data_3 = = 0) = [];
Sense_Data_3 (Sense_Data_3 = = 0) = [];
Time_Data_4 (Time_Data_4 = = 0) = [];
Sense_Data_4 (Sense_Data_4 = = 0) = [];
Time_Data_1 (14000) = 14;
Time_Data_2 (14000) = 14;
Time_Data_3 (14000) = 14;
Time_Data_4 (14000) = 14;
Export_Data (: 1) = Time_Data_1;% var
Export_Data (:, 2) = Sense_Data_1;% var
Export_Data (:, 3) = Time_Data_2;% var
Export_Data (:, 4) = Sense_Data_2;% var
Export_Data (:, 5) = Time_Data_3;% var
Export_Data (:, 6) = Sense_Data_3;% var
Export_Data (: 7) = Time_Data_4;% var
Export_Data (: 8) = Sense_Data_4;% var
名称= [“Time_1”、“Force_Data_1”,“Time_2”,“EMG_Data_1”,“Time_3”,“Force_Data_2”,“Time_4”,“EMG_Data_2”);% var
Final_Export_Data =[名称;Export_Data];% var
文件名= sprintf (ID_ % d_Session_ % d.xlsx, 1, 1);% var
writematrix (Final_Export_Data文件名,“表”,1,“范围”,“A1: I14001”)
情节(app.UIAxes5 Time_Data_1 Sense_Data_1,“r”)
情节(app.UIAxes5 Time_Data_2、Sense_Data_2 ' g ')
情节(app.UIAxes5 Time_Data_3 Sense_Data_3,“m”)
情节(app.UIAxes5 Time_Data_4 Sense_Data_4,“k”)
% %计算前后运动时间
EMG_1 = abs (Sense_Data_2);% var
EMG_2 = abs (Sense_Data_4);% var
Left_Force = Sense_Data_1;% var
Right_Force = Sense_Data_3;% var
长度为n = 1: (Left_Force)
如果Left_Force (n + 3000) < . 05
TimeHold_1 = Time_Data_1 (n);% var
打破
elseif min (EMG_1) > . 05
errordlg(“价值观没有交叉阈值”,“价值观Insignifigant”);
打破
结束
结束
长度为n = 1: (EMG_1)
如果EMG_1 (n) >。2
Hold_2 = Time_Data_2 (n);% var
Hold_3 = Time_Data_4 (n);% var
EMG_1_Pre_MotorTime = Hold_2-TimeHold_1;% var
EMG_2_Pre_MotorTime = Hold_3-TimeHold_1;% var
打破
elseif马克斯(EMG_1) <。2
errordlg(“价值观没有交叉阈值”,“价值观Insignifigant”);
打破
结束
结束
长度为n = 1: (Right_Force)
如果Right_Force (n) > . 05
TimeHold = Time_Data_3 (n);% var
EMG_1_Post_MotorTime = TimeHold-Hold_2;% var
EMG_2_Post_MotorTime = TimeHold-Hold_2;% var
elseif马克斯(Right_Force) < . 05
errordlg(“价值观没有交叉阈值”,“价值观Insignifigant”);
打破
结束
结束
app.EditField.Value = EMG_1_Post_MotorTime + EMG_1_Pre_MotorTime;
app.EditField_2.Value = EMG_2_Post_MotorTime + EMG_2_Pre_MotorTime;
app.EditField_3.Value = EMG_1_Pre_MotorTime;
app.EditField_4.Value = EMG_2_Pre_MotorTime;
app.EditField_5.Value = EMG_1_Post_MotorTime;
app.EditField_6.Value = EMG_2_Post_MotorTime;
% %功能
函数Partisipant_Screen (d、时间)
开始(d,“持续时间”,时间)
DisplayWindow =图;
集(DisplayWindow,“名字”,“测试窗口”);
轴;
集(DisplayWindow,“颜色”,[1 1 1]);
MonitorPosition = (0, ' MonitorPositions ');
如果(大小(get (0, ' MonitorPositions '), 1) > 1)
DisplayWindowPosition = MonitorPosition (2);
其他的
:DisplayWindowPosition =装天花板(MonitorPosition (1) / 2);
结束
集(DisplayWindowPosition DisplayWindow,“位置”,“NumberTitle”,“关闭”,“菜单条”,“没有一个”)
图(DisplayWindow);
DisplayTextHandle =文本(0.5,0.5,“放松”,“字形大小”,300年,“horizontalAlignment”、“中心”、“颜色”,[1 0 0]);
暂停(3);
集(DisplayTextHandle,“可见”,“关闭”);
DisplayTextHandle =文本(0.5,0.5,“准备好”,“字形大小”,250年,“horizontalAlignment”、“中心”、“颜色”,[1 0.55 0]);
暂停(2);
集(DisplayTextHandle,“可见”,“关闭”);
DisplayTextHandle =文本(0.5,0.5,“走吧! !”、“字形大小”,300年,“horizontalAlignment”、“中心”、“颜色”,[0 1 0]);
暂停(5);
集(DisplayTextHandle,“可见”,“关闭”);
DisplayTextHandle =文本(0.5,0.5,“放松”,“字形大小”,300年,“horizontalAlignment”、“中心”、“颜色”,[1 0 0]);
暂停(4);
集(DisplayTextHandle,“可见”,“关闭”);
停止(d)
结束
函数d = DAQ_Acquisition (Axis_1、Axis_2 Axis_3, Axis_4) %将通道输入
d =数据收集(ni);%的这是一个函数的输入
ch_1 = addinput (d,“Dev1”, 0,“电压”);%通道需要输入通道数
ch_2 = addinput (d,“Dev1”6“电压”);
ch_3 = addinput (d,“Dev1”1“电压”);
报警仪标定= addinput (d,“Dev1”, 18岁的“电压”);
d.ScansAvailableFcn = @ (obj, evt) log_LiveData (obj, evt, Axis_1 Axis_2, Axis_3, Axis_4);
结束
函数log_LiveData (obj, evt, Axis_1 Axis_2, Axis_3, Axis_4)
fid1 = fopen (' log.txt ', ' w ');%可能文件作为输入
fid2 = fopen (' log_1.txt ', ' w ');
fid3 = fopen (' log_2.txt ', ' w ');
fid4 = fopen (' log_3.txt ', ' w ');
h = animatedline (Axis_1);
k = animatedline (Axis_2);
l = animatedline (Axis_3);
o = animatedline (Axis_4);
(数据、时间戳~)=阅读(obj, obj.ScansAvailableFcnCount“OutputFormat”、“矩阵”);
data_1_In =[时间戳;数据(:1)];
data_2_In =[时间戳;数据(:,2)];
data_3_In =[时间戳;数据(:,3)];
data_4_In =[时间戳;数据(:,4)];
addpoints (h、时间戳、数据(:1));%的力
addpoints (k、时间戳、数据(:,2));% EMG1
addpoints (l,时间戳数据(:,3));%左力
addpoints (o,时间戳数据(:,4));% EMG2
drawnow
写入文件(fid1 data_1_In“浮动”);
写入文件(fid2 data_2_In“浮动”);
写入文件(fid3 data_3_In“浮动”);
写入文件(fid4 data_4_In“浮动”);
文件关闭(fid1);
文件关闭(fid2);
文件关闭(fid3);
文件关闭(fid4);
结束

答案(0)

类别

找到更多的在计数器和定时器的输入和输出帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!