Matlab接收串口数据
2015-02-14 08:23
351 查看
Matlab接收串口助手发送的txt文档数据,保存为以当前时间命名的txt文档。
最终选择了获取系统当前时间格式为xxxx-xx-xx-xx-xx-xx的“clock”
2.读串口函数选择fread还是fscanf的问题;
fread是读数据,fscanf是读字符,因为我是选择用另外一台电脑通过串口调试助手发送txt文档里面的内容,所以到matalb里面格式为字符;
于是选择fscanf。
fread和fscanf都可以读设备和读文件,所以这里选择读设备,也就是之前顶一个的串口对象;
3.回调函数的问题;
回调函数计数我选择了byte模式,系统默认一个字符计数一次,所以如果发送一个“12306”的值会计数5次;
同理串口缓存区和计数也要注意一下。
调试过程中主要遇到几个问题,
1.保存为txt的文件名如何自动创建最终选择了获取系统当前时间格式为xxxx-xx-xx-xx-xx-xx的“clock”
2.读串口函数选择fread还是fscanf的问题;
fread是读数据,fscanf是读字符,因为我是选择用另外一台电脑通过串口调试助手发送txt文档里面的内容,所以到matalb里面格式为字符;
于是选择fscanf。
fread和fscanf都可以读设备和读文件,所以这里选择读设备,也就是之前顶一个的串口对象;
3.回调函数的问题;
回调函数计数我选择了byte模式,系统默认一个字符计数一次,所以如果发送一个“12306”的值会计数5次;
同理串口缓存区和计数也要注意一下。
程序清单
%% 作者:陈国栋 2015年2月14日 %% 主要参照网络中对Matlab关于串口的帮助的中文翻译; %% 初始化串口。 clear clc Serial_obj=serial('COM1'); Serial_obj.BaudRate=9600; Serial_obj.DataBits=8; Serial_obj.Parity='none'; Serial_obj.StopBits=1; % Serial_obj.Terminator=0; Serial_obj.InputBufferSize=1024; % Serial_obj.timeout=20; %% 创建txt文档。 ch=clock; ch_1=int2str(ch(1)); ch_2=int2str(ch(2)); ch_3=int2str(ch(3)); ch_4=int2str(ch(4)); ch_5=int2str(ch(5)); ch_6=int2str(ch(6)); ch_7='.txt'; FileName=[ch_1,'-',ch_2,'-',ch_3,'-',ch_4,'-',ch_5,'-',ch_6,ch_7]; FileID=fopen(FileName,'a+'); %% 触发回调函数。 % Serial_obj.BytesAvailableFcnCount=256; % Serial_obj.BytesAvailableFcnMode='byte'; % Serial_obj.BytesAvailable=@serial_cbk; %% 打开串口,读写串口内容。 fopen(Serial_obj); Temp_1 = fscanf(Serial_obj,'%d',256); % Read data from device, and format as text % Temp_1 = fscanf(FileID,'%d',256); % Read data from text file % Temp_1 = fread(Serial_obj,256,'uint'); % Read binary data from device % Temp_1 = fread(FileID,256,'uint8'); % Read data from binary file %% 曲线显示。 Temp_2=Temp_1'; plot(Temp_2); %% 保存数据到txt。 fprintf(FileID,'%d',Temp_2); % Write data to text file % fprintf(Serial_obj,'%d',Temp_2); % Write text to device % fwrite(FileID,temp_2,'uint8'); % Write data to binary file % fwrite(Serial_obj,Temp_2,'uint8'); % Write binary data to device %% 关闭串口,清理缓存区 fclose(Serial_obj); delete(Serial_obj); clear Serial_obj %%
相关文章推荐
- Matlab接收串口数据
- MATLAB利用串口接收数据,并实时显示图形
- GPS串口数据接收程序实例
- 串口接收时丢数据问题解决方案
- 串口接收数据及时返回问题(电能表测试的上位机应用程序)
- 串口接收数据
- VC写串口通信遇到只能接收发送数据交替执行的情况
- C#异步数据接收串口操作类
- 串口接收时丢数据问题解决方案
- 串口接收时丢数据问题解决方案
- C#中请问如何在串口通讯中接收输出HEX格式数据
- Delphi:TComPort封装在DLL中,通讯时无法接收串口数据的解决办法
- C#异步数据接收串口操作类
- C#异步数据接收串口操作类
- 一个串口接收数据的代码
- C#异步数据接收串口操作类
- 地磅称量系统之(59) 接收串口数据(串口控件的属性设置和超级终端的使用)
- C#异步数据接收串口操作类
- GPS数据串口接收的数据 是否在一个设定好的检测区内
- C#串口读取GPS接收仪器的数据