matlab上位机串口通信,MATLAB GUIDE 上位机串口通信开发 绘制图形

本人因项目需求,需要开发这个串口通信上位机界面,用于实时绘制串口发送过来的数据。本人之前基本没使用过MATLAB,也就知道个zeros(100)这种在命令行窗口中输入的函数。至于MATLAB能开发图形界面程序,我也是在接到这个项目后才知道的,emmm,我被我的无知吓到了。好了,这就是我开发这个上位机软件的背景和我本人的MATLAB技术水平(渣渣)。在不到两天的时间内开发完成,通过了调试。下面记录一下我这个开发的历程和一些细节。

MATLAB上位机软件怎么开发?

不要见笑,我一个MATLAB小白真不知道怎么开发,更不知道GUIDE这种东东。

所以,MATLAB上位机软件就是从GUIDE开始的。

GUIDE在哪里?

你可以通过两个方式找到他:

1)命令行窗口:guide(回车就见到他了)

2)MATLAB界面 -> 新建 -> 图形用户界面 (点击也能看到他)

如何开发?

有开发经验的就绕道了哦,我这是第一次用MATLAB开发,所以比较“啰嗦”

看到这个问题,没有开发经验的小白们,是不是第一就想到了“百度一下,你就知道”,我呢,就不推荐这个了,我推荐用MATLAB的帮助文档。这个帮助文档可以在MATLAB主界面中工具栏右侧的“帮助”选项中找到。P.S. 帮助文档是学习软件的第一手资料!!!英文看不懂的就只能百度了

850b997e294522643f4163055246f978.png

在调出“帮助浏览器”后,在搜索栏输入“guide”在搜索的内容点击第一个“guide-Open GUIDE”,进入后,下面有个“More About”,里面有个“Create a Simple UI Using GUIDE”,点进去,然后按照里面官方的指导,学一下如何建立一个上位机软件。

e7f92a747bbdee2157e48d74bdc27562.png

实现后,仔细体验一下里面的回调函数(类似于Qt里面的槽函数)。

我是如何开发的呢?

建立一个空白的区域后,就要开始构思自己需要哪些控件了,如图是我的控件添加情况:

2b3f71f4957c081218ebb943cf727739.png

经过官方教程的学习,详细你已经有能力往下拉菜单中添加COM口信息了,我添加到了COM21。

这里一定要自己定义Tag标签,如下图,其他按钮的Tag我就不展示了。

74fd5a763293fe9255c5e2583365a323.png

现在在下拉菜单上右键,选择“Callback” 如图:

9e9b7bd274174a405d4b774ad5af6c81.png

里面的执行函数我已经写好了,不过在最后一定要加上一个语句,否则选定的COM端口不会被保存的

​ guidata(hObject, handles);% 保存配置

c7d008c46711795c35e05453096959e1.png

bda0ac2ffe3748b1cd575985d0b2ff45.png

打开串口的按钮回调程序是这样的,同样的下面的语句是必不可少的,否则配置的串口信息都会丢失的

​ guidata(hObject, handles);% 保存配置

里面关于串口的配置信息,可以打开帮助浏览器,搜索“serial” 或者“Serial Port Devices”你会发现一个新世界,当然配合百度你会学的更快

1dd782adba4ba52630c65cc0ffdd4f8e.png

关闭串口的回调程序,按照套路很好编出来的。

串口开发(敲黑板,划重点)

主要就是串口接收数据的函数,因为串口发送的数据为8位(串口决定的),而我的采集数据为16位保存的,所以,在发送时一定要将16位的数据分割一下。举个例子,一个16位的振动数据本来是占一个坑,将此16位数据分成高8位和低8位保存后,每个8位占一个坑,现在一个振动数据就占了两个坑。通过串口发送要发送两次才能发送出去一个完整的振动数据,因此在MATLAB接收端应该设计一个算法,将接收的两个8位的振动数据重新合并为原来的一个16位的振动数据。这就是一个简单的通信协议开发。在MATLAB端合并数据一定要注意,传过来的数据是8位的,但MATLAB默认的变量为double型的,所以,这里要对接受串口数据的变量做强制转换,然后在做相应的移位处理。才行。如下图所示:

3d5e7898fa2ccaa8ce5537f49d5a484c.png

最后结果

116497c976e362b6de6d55de341ca4e3.png

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值