求救I!!matlab通讯问题!
globals;s=serial('com1');set(s,'BaudRate',9600);%Baud初始化set(s,'DataBits',8);%设置数据长度se...
global s;
s=serial('com1');
set(s,'BaudRate',9600);%Baud初始化
set(s,'DataBits',8);%设置数据长度
set(s,'StopBits',1);%设置停止位长度
set(s,'InputBufferSize',20);%设置输入缓冲区大小为1M
s.Timeout=30;
s.BytesAvailableFcnMode='byte';
s.BytesAvailableFcnCount=20; %输入缓冲区存在8192*4个字节触发回调函数
s.BytesAvailableFcn=@instrcallback;%回调函数的指定
fopen(s);%打开串口
其中回调:s.BytesAvailableFcn=@instrcallback时回调函数中在函数尾部添加程序为:
data=fread(obj);
fid = fopen('D:\matlabwork\test.txt','a+');
fprintf(fid,'%s',data);
%fwrite(fid,data);
fclose(fid);
其中:instrcallback.m在MATLAB7\toolbox\matlab\iofun\@instrument目录下面
运行时出现以下错误:
BytesAvailable event occurred at 21:14:44 for the object: Serial-COM1.
??? Error using ==> fwrite
Invalid file identifier -1.
Warning: The BytesAvailableFcn is being disabled. To enable the callback property
either connect to the hardware with FOPEN or set the BytesAvailableFcn property.
有没有帮忙解答一下!具体是哪错的? 展开
s=serial('com1');
set(s,'BaudRate',9600);%Baud初始化
set(s,'DataBits',8);%设置数据长度
set(s,'StopBits',1);%设置停止位长度
set(s,'InputBufferSize',20);%设置输入缓冲区大小为1M
s.Timeout=30;
s.BytesAvailableFcnMode='byte';
s.BytesAvailableFcnCount=20; %输入缓冲区存在8192*4个字节触发回调函数
s.BytesAvailableFcn=@instrcallback;%回调函数的指定
fopen(s);%打开串口
其中回调:s.BytesAvailableFcn=@instrcallback时回调函数中在函数尾部添加程序为:
data=fread(obj);
fid = fopen('D:\matlabwork\test.txt','a+');
fprintf(fid,'%s',data);
%fwrite(fid,data);
fclose(fid);
其中:instrcallback.m在MATLAB7\toolbox\matlab\iofun\@instrument目录下面
运行时出现以下错误:
BytesAvailable event occurred at 21:14:44 for the object: Serial-COM1.
??? Error using ==> fwrite
Invalid file identifier -1.
Warning: The BytesAvailableFcn is being disabled. To enable the callback property
either connect to the hardware with FOPEN or set the BytesAvailableFcn property.
有没有帮忙解答一下!具体是哪错的? 展开
2个回答
展开全部
对象 串口COM1 发生BytesAvailable 事件于21:14:44 。
?错误使用==> FWRITE
无效的文件标识符-1。
警告:BytesAvailableFcn被禁用。用fopen命令或设置BytesAvailableFcn属性,回调属性或连接的硬件。
===================
你在fid = fopen('D:\matlabwork\test.txt','a+');语句后添加下列程序再试试
if fid == -1
disp('fopen failed.');
return;
?错误使用==> FWRITE
无效的文件标识符-1。
警告:BytesAvailableFcn被禁用。用fopen命令或设置BytesAvailableFcn属性,回调属性或连接的硬件。
===================
你在fid = fopen('D:\matlabwork\test.txt','a+');语句后添加下列程序再试试
if fid == -1
disp('fopen failed.');
return;
追问
data=fread(obj);
fid = fopen('D:\matlabwork\test.txt','a+');
if fid == -1
disp('fopen failed.');
return;
fwrite(fid,data,'int8');
%fwrite(fid,data);
fclose(fid);
其中回调:s.BytesAvailableFcn=@instrcallback时回调函数中在函数尾部添加程序改为上面的程序:为什么我创建的TXT文件中不能保存数据始终为空,但串口能接收到数据。
追答
fwrite(fid,data,'integer*8')
试试。是不是你用的解释器不支持INT8这种表述。
还有,data=fread(obj);语句后data是否为空。
FREAD语法应该为:
A = FREAD(FID)
A = FREAD(FID,SIZE)
A = FREAD(FID,SIZE,PRECISION)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
xian fan yi yi xia ma
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询