matlab坐标轴显示位置信息

阅读: 评论:0

matlab坐标轴显示位置信息

matlab坐标轴显示位置信息

文章目录

  • 前言
  • 一、主要思想
  • 二、具体步骤
    • 1.虚拟串口
    • 2.创建串口
    • 3.产生初始点
    • 4.接收位置数据,并显示
    • 结果如下所示,发送的我们想要的数据变色,发送000000将置位 ![在这里插入图片描述](.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWEdZTg==,size_20,color_FFFFFF,t_70,g_se,x_16)
  • 总结


前言

在matlab设计上位机过程中,由于缺少显示位置的控件,我们可以利用坐标控件对位置进行大致的显示,基本可以满足我们所需要的功能


提示:以下是本篇文章正文内容,下面案例可供参考

一、主要思想

利用坐标轴画一些已知点,如果接收到位置信息,可以改变点的颜色或者形状达到位置显示的目的

二、具体步骤

1.虚拟串口

利用虚拟串口发送位置信息,然后使用matlab创建串口进行接收,我们利用虚拟串口软件创建了两个虚拟串口COM1和COM2,所需要发送的数据可以利用串口调试助手COM1发送COM2接收;需要注意的一点是串口调试助手设置参数要和matlab串口参数一致。

2.创建串口

代码如下(示例):

close all;clc;
delete(instrfindall); postion_mat=ones(8,16);
count=1;time=0;
s=serial('COM1');
s.InputBufferSize =512;
s.OutputBufferSize =512;
s.ReadAsyncMode='continuous';
s.BaudRate =115200;
s.Parity ='none';
s.StopBits =1;
s.DataBits =8;
s.Terminator ='CR';
s.FlowControl ='none';
s.timeout =1;
s.BytesAvailableFcnMode = 'byte';
s.BytesAvailableFcnCount = 1024;
s.BytesAvailableFcn = @callback;
tryfopen(s);
catchdisp("error");
end%打开串口

创建串口,并且对于串口的一些参数,例如波特率、停止位等等进行初始化。并且打开串口。

3.产生初始点

代码如下(示例):

%产生128个点
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% for x=1:8
%             for y=1:16
%                 scatter(x,y,'green','filled');
%                 hold on;
%             end
% end%产生128个点
%优化后
data1=1:16;
datax=[];
datay=[];
for x=1:8data2=x*ones(16,1);datax=[datax;data2];%生成x坐标datay=[datay;data1']
end
data=[datax;datay];
scatter(datax,datay,'g','filled');
hold on;

这里需要注意的是可以利用matlab先产生数据的坐标,然后再绘图,并不需要一个点一个点画,会拖慢程序运行速度

4.接收位置数据,并显示

利用串口软件接收到位置数据,并且在相应的点上改变点的颜色和形状,由于每个人定义点坐标并不相同,这里我们所需要显示的并不是一个点,而是很多点的集合。
代码如下(示例):

while(1) 
A = fread(s,3,'uint8'); %从串口对象中读取size字节长短的二进制数据,以数组形式存于A
yn=ordinatetransform(A(3));%转换坐标,得到我们想要的坐标值    
chip_select=A(1);x=A(2);%y=yn(k);
switch chip_selectcase 170for k=1:length(yn)y=yn(k);postion_mat(x,y)=2; scatter(x,y,'r','filled');hold on;drawnow;endcase 187 for k=1:length(yn)y=yn(k);postion_mat(x,y+8)=2;scatter(x,y+8,'r','filled');hold on;drawnow;endcase 0for i=1:8for j=1:16if  postion_mat(i,j)==2scatter(i,j,'green','filled');postion_mat(i,j)=1;hold on;drawnow;endendendotherwisedisp('error data');
end
end
function [d]=ordinatetransform(Ordinate)
b=dec2bin(Ordinate,8);%aa=10101010
d=[];j=1;
for i=1:8
if strcmp(b(i),'1')d(j)=i;j=j+1;
end
end
end

结果如下所示,发送的我们想要的数据变色,发送000000将置位

总结

在使用APP Designer设计上位机的过程中,如果发现没有自己想要的组件,则需要自己想办法实现我们所需要的功能,而不是一味的依靠给的空间,可以实现基本功能即可。

本文发布于:2024-01-28 01:48:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063777123939.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:坐标轴   位置   信息   matlab
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23