MATLAB串口通信与实时数据处理
2012-10-20 22:29
148 查看
% 主要用到的命令及函数 % 所有注释文字均为原创,用词并非一定准确,仅供参考 % 没有写GUI的程序,若用VC或.NET写串口通讯的界面程序,需要考虑到多线程任务的处理,比较复杂,因为MATLAB有中断响应事件instrcallback,大大简化了程序的编写; % 设置串口号,字符串形式 strSerialPortNum = input('串口号(数字):'); strSerialPortName = ['COM',num2str(strSerialPortNum)]; % 设置串口参数 % 设置串口对象 s = serial(strSerialPortName); % 设置串口波特率(38400),校验位(偶校验) % 其他参数可查看MATLAB帮助文档 set(s,'BaudRate',38400,'parity','even'); % 设置中断反馈函数 set(s, 'BytesAvailableFcn', {'instrcallback'}); % 注意函数“instrcallback”的位置,比如我的是D:\Program Files\MATLAB\R2011b\toolbox\shared\instrument\@instrument\instrcallback.m,经验证,把instrcallback.m复制到主程序目录下并不产生作用,应该是只能修改安装目录下%toolbox\shared\instrument\@instrument\instrcallback.m的文件中的程序才有用。 % 设置中断响应(有10个可用字节时,产生中断) set(s, 'BytesAvailableFcnCount', 10); % 设置中断响应模式(有“byte”和“Terminator”两种模式可选,“byte”是达到一定字节数产生中断,“Terminator”可用作键盘某个按键事件来产生中断) set(s, 'BytesAvailableFcnMode', 'byte'); % 设置串口数据最大读写时间,如果超过这个时间,仍读取不到数据,那么则终止读写 % 注:串口的一些参数必须在打开串口之前进行设置,即在串口状态是“Close”的情况下来进行设置 set(s, 'TimeOut', 1); % 打开串口 fopen(s); % 向串口发送数据(这里发送一个大写字母“S”,这是我的硬件数据通信握手指令;本来用fprintf(s,'S')命令发送,但是结果只产生一帧的数据,后来在中断响应函数instrcallback中也加入fprintf(s,'S')命令来不断的向硬件发送握手请求,但发现数据的传输速率慢了好几倍,本来是硬件中设置的是发送一次“S”指令,即可不断的产生数据,这样数据传输速率基本能达到每9ms接收10KB的数据,而在上位机MATLAB中循环发送握手指令,数据传输速率慢且不稳定,平均25-40ms接收10KB的数据。查看MATLAB的帮助文档,发现fprintf(s,'S')命令其实是向串口发送了“S\n”这样的指令,所以才会出现只能接收一帧数据(我这里是10KB)的情况。我需要的是单发送字符“S”,需用fprintf(s,'%c','S')指令); fprintf(s,'%c','S'); % 逐帧读取串口数据,这里一帧是10个字节,以2进制方式读取,用uint8(8位无符号整型)参数; receiveData = fread(s,10,'uint8'); % 上面这句命令我是写在中断响应函数instrcallback中的,还有一些数据处理的代码,有时间会详细写在以后的博文中;这句之后即可加上N多的数据处理代码了(instrcallback函数的作用也在于此); % 关闭串口对象 fclose(s); % 删除串口对象(并非必须) delete(s); % 清楚串口对象所占内存(并非必须) clear s;
相关文章推荐
- SparkStreaming+Kafka 处理实时WIFI数据
- 大数据实时处理storm,jstorm
- 2.处理前置发送的实时数据
- 实时数据处理环境搭建flume+kafka+storm:4.storm安装配置
- Storm - 大数据Big Data实时处理架构
- Storm翻版:开源实时数据处理系统Samza
- 用于实时大数据处理的Lambda架构
- 异步计算架构解决准实时数据处理
- 开放实时数据处理平台 Twitter Storm(转)
- 大数据实时处理:百分点实时计算架构和算法
- Apache Kafka:大数据的实时处理时代
- Apache Kafka:大数据的实时处理时代
- Storm的“翻版”:LinkedIn开源实时数据处理系统Samza
- Twitter Storm 实时数据处理框架分析总结
- 【Apache Samza 系列】实时流数据处理框架Samza中文教程 (二)-- 背景
- Hadoop不适合处理实时数据的原因剖析
- 后台线程处理数据,如何实时更新UI(datagridview)----多线程同步问题
- 大规模实时数据处理openPDC
- 大数据学习(一):实时处理环境搭建
- 实时流式数据处理和大规模离线数据处理