【技术分享】MATLAB串口收发程序
0赞三天了,终于把串口收发程序搞定。写点东西,免得忘记。也给别人一点参考吧!!!
先介绍个MATLAB论坛,我觉得挺不错的,网址:http://www.ilovematlab.cn/forum.php
先上几幅图 O(∩_∩)O~
界面一:
把串口线的TX和RX短接,正常发送和接收!!!!
help—>About Software……
刚开始接触的时候,大脑一片空白,不知从何下手,就在MATLAB的help文档中search—>serial,一搜,东西一大堆
一下子把我吓到了,没办法,一点一点慢慢看,边看我就边实践,感谢文档中有许多例子,这样理解起来简单多了
毕竟看英文文档还没达到一定境界,只好网上搜搜相关的例子,说实话,看别人代码还真有点不耐烦,一般就
扫描一下,只有在一步步的编程中遇到解决不了的问题,才从相关例子中找答案。
现在给出详细的过程:
我用GUIDE创建了一个GUI
然后就添加一些按键菜单什么的,如push button,radio button,pop up menu只用到了一种控件,就是LED ActiveX Control,刚开始很多都完全不知道干嘛,没办法
在help文档上search吧
至于怎么添加回调函数,怎样编写程序,我就不一一细说了。
这里给出思路……
首先,需要建立串口,但是建立串口前你要判断串口是否可用,可以用
getcom=instrhwinfo ('serial')查找可用串口
然后需要给串口一些设置,有些设置需要在建立串口之前设置好,例如波特率,数据位,校验位等,常见的设置在上面的图上都有
在建立串口的时候也要把怎么触发接收的回调函数设置好,因为你要告诉软件,什么时候你可以接收数据,至于发送就简单多了,
毕竟接收是被动的,发送是主动的。
给两种常见的触发
1.定时触发
'TimerPeriod', 0.1,... %每0.1秒调用一次接收的回调函数
'timerfcn', {@mycallback, handles}); %mycallback就是接收的回调函数的函数名
2.终止符触发
'BytesAvailableFcnMode','terminator',... %一旦接收到终止符就启动回调函数,下位机每次发送一次数据,就会在数据的结尾加一个终止符
'BytesAvailableFcn',{@mycallback,handles});
你每发一次数据例如god_of_death(字符)或者ff(十六进制),MATLAB都会自动在最后面添加一个终止符
现在就可以写接收程序的回调函数和发送程序了,要想可以接收十六进制数据和字符数据,还是要花一番心思下去,期间我用到了各种各样的函数
sprintf,strcat,find,rem,reshape,hex2dec等。
还有一点需要注意的是:对于发送,是先发送的发送缓冲区,可以用很多函数,如fprintf,至于具体怎么发送,我们可以不需要知道;
对于接收,是先到了接受缓冲区,然后再用读函数如fscanf读出,我们上面设置了这么多,对于读写没有影响,我们只需使用简单的读写函数就可以了。
writing data
reading data
说实在的,编一个称心的小软件需要注意蛮多东西的,例如左上角图标的修改,怎样生成EXE文件,怎样添加背景图片并在图片上显示文字,怎么添加声音等等,对于MATLAB,你还不能直接把EXE拷贝到其他没安装MATLAB相关库里面运行,不像VB,多好,省了好多麻烦。但是谁叫人家MATLAB软件功能这么强大。现在人们都希望能够直观的看到结果,这里再贴一张用某网友用VC编的串口软件,就可以直观的看到温度和湿度的变化
最后当然没忘记共享一下程序啦~