lb8820265 发表于 2019-5-9 22:01

MATLAB APP Designer串口调试工具编写

<div class='showpostmsg'> 本帖最后由 lb8820265 于 2019-5-9 23:11 编辑

       前面介绍过使用VC6制作串口调试工具的两种方式:SerialPort类串口,mscomm控件串口。这次介绍使用MATLAT制作串口上位机,为何想用MATLAB,因为MATLAB除了不会生孩子,其他的都会,同时MATLAB也是算法研发者的最爱。      MATLAB在2016版本中加入了APPDesigner模块,可以理解为是一个界面设计模块。在matlab中一直有一个界面设计模块叫做GUIDE,设计出来的界面就像VC6设计的,APP Designer就比较像VS设计出来的。APP Designer的界面跟漂亮,控件元素更多。网上可以搜到很多基于GUIDE的串口代码,却少有APPDesigner设计的。今天就来一步一步展示如何设计出一个串口调试工具。       学习MATLAB最好的方法就是查看帮助,在帮助手册中搜索APP Designer就可以,界面如下:      将帮助看完,会对APP Designer有一个比较全面的了解,让我们开始。打开APP Designer      打开MATLAB-->新建-->APP-->App设计工具,如下:
编辑界面                   打开的界面如下:
      页面的功能区很明显,拖入如上图所示的控件,并修改控件的ID,      其中下拉菜单添加如下图所示的端口标志。       其他控件的设置详见源码。添加属性—全局变量      界面切换到代码视图-->编辑器-->属性-->公有属性,系统自带添加properties代码。      在中间添加如下代码:添加私有函数—“接收”回调函数
      界面切换到代码视图-->编辑器-->函数-->公有属性,系统自带添加代码。      在中间添加如下代码:      该代码的作用是接收的回调函数。启动初始化函数      启动初始化函数的作用是在程序运行前先运行的一段代码,在设计界面右击-->回调-->添加StartupFcn回调, 如下:      系统添加startupFcn函数,添加如下代码:      代码主要是用来设置变量的初始值,确保串口已经释放。“打开串口”回调      切换到设计视图,在“打开串口”按钮上右击-->回调-->添加回调函数,系统自动添加回调函数。      添加如下所示代码:      代码主要是设置串口参数,串口接收回调函数,UI显示。“发送”回调      在发送按钮上同样添加回调函数如下:   代码主要作用是将发送编辑框中的内容发送出去。演示   用VSPD虚拟两个相连的串口,然后使用另一个串口软件,设置波特率115200。运行APP Designer上的绿色的箭头。然后选择串口,点击“打开串口”灯变绿色。然后相互发送数据如下:      源码见附件。(源码需要在APP Designer中打开,新建-->APP-->App设计工具-->打开)
</div><script>                                var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                               
                                if(parseInt(discuz_uid)==0){
                                                                                        (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                }
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

freebsder 发表于 2019-5-9 23:01

高级了!

不足论 发表于 2019-5-9 23:07

好东西!

asha 发表于 2019-5-10 09:25

{:1_103:}{:1_103:}{:1_103:}{:1_103:}

viphotman 发表于 2019-5-10 10:03

真不知道matlab还能干这事,最后这个能在windows下独立运行吗;像.exe程序那样?

muxb 发表于 2019-5-10 14:00

厉害{:1_103:}

lb8820265 发表于 2019-5-10 21:22

viphotman 发表于 2019-5-10 10:03
真不知道matlab还能干这事,最后这个能在windows下独立运行吗;像.exe程序那样?

可以的,MATLAB可以打包成包含库文件的exe和不包含库文件的exe.

bqgup 发表于 2019-5-11 08:03

厉害了,MATLAB

jackfrost 发表于 2019-5-11 13:41

有意思,原来MATLAB还有这样的功能,实在太强大了,咱也跟着学下{:1_103:}

寒风吹彻 发表于 2019-6-24 18:31

<p>你好,我对你的代码进行了调试,发现有一点不明白的地方,希望你能指点我一下。&nbsp;</p>

<p>具体的是:接收的回调函数里,&nbsp;function &nbsp;EveBytesAvailableFcn(app, src, event),代码中第40行。&nbsp; &nbsp;这一句中,src和event是什么意思?不是很明白。</p>

lb8820265 发表于 2019-6-27 22:36

寒风吹彻 发表于 2019-6-24 18:31
你好,我对你的代码进行了调试,发现有一点不明白的地方,希望你能指点我一下。&nbsp;

具体的是:接收的 ...

<p>这个是matlab的自定义回调函数用法,我在回调函数指定的时候前面用了一个@,这就代表了这个函数会有opj和event,opj相当于句柄,event具体是什么我也不知道,一般也没用过,APP是APP designer特有的guide没有,相当于C++里面的this。</p>

fashoon 发表于 2019-7-10 19:55

<p>为什么我下载了你的代码,但用APP designer打不开啊</p>

lb8820265 发表于 2019-7-10 22:59

fashoon 发表于 2019-7-10 19:55
为什么我下载了你的代码,但用APP designer打不开啊

<p>看看错误提示,是不是版本太低了</p>

张杰克 发表于 2019-10-23 00:01

<p>倍棒!正想学习一下这个。</p>

seigrat 发表于 2019-11-3 11:20

警告: 当 'AutoResizeChildren' 设置为 'on' 时,'SizeChangedFcn' 回调将不会执行。   请问大神。这个警告是咋回事啊?

xiaoxie 发表于 2020-5-15 10:02

楼主给力呀,赞一个!

livecf 发表于 2020-7-3 00:11

<p>感谢楼主,课设正好拿来做上位机</p>

宋元浩 发表于 2020-7-3 12:19

<p>感谢楼主,一直用QT写上位机,没想到matlab做的也不错</p>

幼稚园生 发表于 2020-8-14 13:35

<p>大佬好,串口发送和接收都识别不了回车和换行,这个应该怎么解决啊</p>

lb8820265 发表于 2020-8-16 16:56

幼稚园生 发表于 2020-8-14 13:35
大佬好,串口发送和接收都识别不了回车和换行,这个应该怎么解决啊

<p>我试了下,回车和换行都是可以发送的呀,他们分别是&lsquo;0C&rsquo;,&#39;0A&rsquo;,这些都是可以接收和发送的,你不能看接收栏文本框的内容,你要看接收字符串的字符串数组,或者你让现实16进制不显示字符串也能看到。</p>
页: [1] 2
查看完整版本: MATLAB APP Designer串口调试工具编写