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> 高级了! 好东西! {:1_103:}{:1_103:}{:1_103:}{:1_103:}
真不知道matlab还能干这事,最后这个能在windows下独立运行吗;像.exe程序那样? 厉害{:1_103:} viphotman 发表于 2019-5-10 10:03
真不知道matlab还能干这事,最后这个能在windows下独立运行吗;像.exe程序那样?
可以的,MATLAB可以打包成包含库文件的exe和不包含库文件的exe. 厉害了,MATLAB 有意思,原来MATLAB还有这样的功能,实在太强大了,咱也跟着学下{:1_103:} <p>你好,我对你的代码进行了调试,发现有一点不明白的地方,希望你能指点我一下。 </p>
<p>具体的是:接收的回调函数里, function EveBytesAvailableFcn(app, src, event),代码中第40行。 这一句中,src和event是什么意思?不是很明白。</p>
寒风吹彻 发表于 2019-6-24 18:31
你好,我对你的代码进行了调试,发现有一点不明白的地方,希望你能指点我一下。
具体的是:接收的 ...
<p>这个是matlab的自定义回调函数用法,我在回调函数指定的时候前面用了一个@,这就代表了这个函数会有opj和event,opj相当于句柄,event具体是什么我也不知道,一般也没用过,APP是APP designer特有的guide没有,相当于C++里面的this。</p>
<p>为什么我下载了你的代码,但用APP designer打不开啊</p>
fashoon 发表于 2019-7-10 19:55
为什么我下载了你的代码,但用APP designer打不开啊
<p>看看错误提示,是不是版本太低了</p>
<p>倍棒!正想学习一下这个。</p>
警告: 当 'AutoResizeChildren' 设置为 'on' 时,'SizeChangedFcn' 回调将不会执行。 请问大神。这个警告是咋回事啊? 楼主给力呀,赞一个! <p>感谢楼主,课设正好拿来做上位机</p>
<p>感谢楼主,一直用QT写上位机,没想到matlab做的也不错</p>
<p>大佬好,串口发送和接收都识别不了回车和换行,这个应该怎么解决啊</p>
幼稚园生 发表于 2020-8-14 13:35
大佬好,串口发送和接收都识别不了回车和换行,这个应该怎么解决啊
<p>我试了下,回车和换行都是可以发送的呀,他们分别是‘0C’,'0A’,这些都是可以接收和发送的,你不能看接收栏文本框的内容,你要看接收字符串的字符串数组,或者你让现实16进制不显示字符串也能看到。</p>
页:
[1]
2