matlab实用小程序段 —— 串口发送和读取

512 阅读1分钟


sr3 = serial('COM3');       % 使用默认设置创建串口sr3

       fopen(sr3);                 %打开串口

       fprintf(sr3,'xxx');         % 给串口写入数据

       str = fscanf(sr3)           %读取串口数据(无分号,可在Matlab工作区实时查看)

       fclose(sr3);                %关闭串口

       delete(sr3);

       clear sr3;

 

串口发送数据

s = serial('COM9');

 

   Serial Port Object : Serial-COM9

   Communication Settings 
Port:               COM9
BaudRate:           9600
Terminator:         'LF'  %串口触发字符“换行符”(缺省符)   串口触发字符“回车符”(CR)

   Communication State 
Status:             closed
RecordStatus:       off

   Read/Write State  
TransferStatus:     idle
BytesAvailable:     0
ValuesReceived:     0
ValuesSent:         0

 

fopen(s)

s.ReadAsyncMode = 'continuous';  %连续接收,缺省模式

fprintf(s,'MR YANG')

fclose(s)

delete(s);

clear s;

串口连续接收数据(不好用)

>>  s=serial('COM9')

   Serial Port Object : Serial-COM9

   Communication Settings 
Port:               COM9
BaudRate:           9600
Terminator:         'LF'

   Communication State 
Status:             closed
RecordStatus:       off

   Read/Write State  
TransferStatus:     idle
BytesAvailable:     0
ValuesReceived:     0
ValuesSent:         0

>>  fopen(s);
>> s.ReadAsyncMode = 'continuous';
>> while(1)
if(s.BytesAvailable)
out = fscanf(s)
end
end

(或者str = fscanf(sr3)  读取数据)

注意:当进入死循环后,用快捷键Ctrl+C强行中断

 

out =

yang 123

串口中断接收数据:详细参见blog.csdn.net/c_ycy/artic…


注意,函数文件的开头,应该出现在M文件中,而不是在运行窗口输入的

   只有当.m文件不busy时才能对变量进行操作