1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| clc clear % 只显示10秒数据 xrange=[-9 1]; %yrange=[-20 +20]; yrange=[-1 +1]; data_rate_hz=16 disp_rate_hz=10 step=1/data_rate_hz % 显示数据间隔 disp_interval=data_rate_hz/disp_rate_hz % 只缓冲30秒的数据,过多的缓冲数据会导致系统无法及时处理数据,导致响应慢。 data_cache = 30*data_rate_hz; in_file = '/tmp/matlab_pipe'
% 创建PIPE, 其它进程可通过该管道把数据发送进来 !rm -rf /tmp/matlab_pipe !mknod /tmp/matlab_pipe p !adb shell logcat -c; adb shell logcat -s MPL | grep "BIAS:" > /tmp/matlab_pipe &
t=[0] m=[0; 0; 0] p = plot(t,m,... 'EraseMode','background','MarkerSize',5); axis([xrange(1) xrange(2) yrange(1) yrange(2)]); grid on; i=0;
try fd = fopen(in_file); while(true) %tic %toc i = i+1; s = fgetl(fd); if (strncmp(s, 'D/MPL', 5) == false) fprintf('-- skip: %s\n\n', s) continue; end %disp(s); S = regexp(s, '\s+', 'split'); x = str2double(char(S(4))); y = str2double(char(S(5))); z = str2double(char(S(6))); %fprintf('%+f %+f %+f %s\n', x, y, z, char(S(9))); t(end+1)=step*i; m(:,end+1)=[x; y; z];
if (mod(i, data_cache) == 0) t = []; m = []; end t(end+1)=step*i; m(:,end+1)=[x; y; z];
if (mod(i, disp_interval) == 0) %t=[t step*i]; %m=[m [x; y; z]]; %t(end+1)=step*i; %m(:,end+1)=[x; y; z]; set(p(1),'XData',t,'YData',m(1,:)) set(p(2),'XData',t,'YData',m(2,:)) set(p(3),'XData',t,'YData',m(3,:)) %drawnow xrange(1)=xrange(1)+step*disp_interval; xrange(2)=xrange(2)+step*disp_interval; %{ if (x<yrange(1)) yrange(1) = x+1; end if (y<yrange(1)) yrange(1) = y+1; end if (z<yrange(1)) yrange(1) = z+1; end if (x>yrange(2)) yrange(2) = x+1; end if (y>yrange(2)) yrange(2) = y+1; end if (z>yrange(2)) yrange(2) = z+1; end %} axis([xrange(1) xrange(2) yrange(1) yrange(2)]); drawnow %pause(0.1); end end
fclose(fd); catch err disp('Exit Sensor Monitor'); fclose(fd); !rm -rf /tmp/matlab_pipe !adb shell busybox pkill logcat end
|