God_of_Death

【技术分享】MATLAB串口收发程序

0
阅读(9790)

三天了,终于把串口收发程序搞定。写点东西,免得忘记。也给别人一点参考吧!!!

先介绍个MATLAB论坛,我觉得挺不错的,网址:http://www.ilovematlab.cn/forum.php

先上几幅图    O(∩_∩)O~

界面一:

image

把串口线的TX和RX短接,正常发送和接收!!!!

image

help—>About Software……

image










刚开始接触的时候,大脑一片空白,不知从何下手,就在MATLAB的help文档中search—>serial,一搜,东西一大堆

image

一下子把我吓到了,没办法,一点一点慢慢看,边看我就边实践,感谢文档中有许多例子,这样理解起来简单多了

image

毕竟看英文文档还没达到一定境界,只好网上搜搜相关的例子,说实话,看别人代码还真有点不耐烦,一般就

扫描一下,只有在一步步的编程中遇到解决不了的问题,才从相关例子中找答案。

 




现在给出详细的过程:

我用GUIDE创建了一个GUI

image

然后就添加一些按键菜单什么的,如push button,radio button,pop up menu只用到了一种控件,就是LED ActiveX Control,刚开始很多都完全不知道干嘛,没办法

在help文档上search吧

imageimage

至于怎么添加回调函数,怎样编写程序,我就不一一细说了。

 

这里给出思路……

首先,需要建立串口,但是建立串口前你要判断串口是否可用,可以用

getcom=instrhwinfo ('serial')查找可用串口
image

然后需要给串口一些设置,有些设置需要在建立串口之前设置好,例如波特率,数据位,校验位等,常见的设置在上面的图上都有

在建立串口的时候也要把怎么触发接收的回调函数设置好,因为你要告诉软件,什么时候你可以接收数据,至于发送就简单多了,

毕竟接收是被动的,发送是主动的。

给两种常见的触发

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

image

image

reading  data

image

image





 

 说实在的,编一个称心的小软件需要注意蛮多东西的,例如左上角图标的修改,怎样生成EXE文件,怎样添加背景图片并在图片上显示文字,怎么添加声音等等,对于MATLAB,你还不能直接把EXE拷贝到其他没安装MATLAB相关库里面运行,不像VB,多好,省了好多麻烦。但是谁叫人家MATLAB软件功能这么强大。现在人们都希望能够直观的看到结果,这里再贴一张用某网友用VC编的串口软件,就可以直观的看到温度和湿度的变化

 

 

最后当然没忘记共享一下程序啦~

serial.rar