Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-06-05, 14:30   #1
foxselina
初级会员
 
注册日期: 2008-05-23
年龄: 42
帖子: 9
声望力: 0
foxselina 正向着好的方向发展
默认 [求助]关于串口编程的问题

这是一个简单的程序:
s=serial('com1');
set(s,'baudrate',9600);
fopen(s);
fprintf(s,'Hello, World!');
s.status
fclose(s);
s.status
delete(s);
clear s;
在这之前,我用SerialNull虚拟了一个COM2,同COM1相连,并用串口调试助手V2.2来打开COM2。
但运行结果总是:
??? Error using ==> serial.fprintf
A timeout occurred during the write operation.

Error in ==> Try at 4
fprintf(s,'Hello, World!');
但此时在串口调试助手上已经显示:Hello, World!
我不知道这个timeout是什么意思,在这种波特率下,在默认的10秒钟内还传不完吗?我怀疑是terminator设置有异,使程序不能判断数据是否传输完成;因为我把能查出来的属性都对了一遍,只有这个属性在串口调试助手上没有说明——MATLAB默认值是'LF'。
我也搞不清这个timeout的作用。

请高手指教!
__________________
FATE? HAH! YOU ARE MINE....
foxselina 当前离线   回复时引用此帖
旧 2008-06-06, 09:38   #2
foxselina
初级会员
 
注册日期: 2008-05-23
年龄: 42
帖子: 9
声望力: 0
foxselina 正向着好的方向发展
默认

接上,
而且,我现在也怀疑和防火墙是不是有关系。在后续的试验中,我实验了接收程序,即fscanf。结果是可以通过,但会有Warning,告知timeout,可结果好在不会中断程序。

请高手不吝赐教!
__________________
FATE? HAH! YOU ARE MINE....
foxselina 当前离线   回复时引用此帖
旧 2008-06-06, 14:24   #3
foxselina
初级会员
 
注册日期: 2008-05-23
年龄: 42
帖子: 9
声望力: 0
foxselina 正向着好的方向发展
默认

现在,我对timeout并不怀疑,但我对terminator越发不信任。
我将默认值也输入到程序中(包括terminator为'LF'和在fprintf中的'%s\n')。可超时依旧,我用串口调试工具可以完全接收我发送的数据,包括换行符(\n),但是主程序还是在一直运行直到timeout。所以我觉得系统根本就没有去识别最后的一个换行符(\n)。
真是奇怪了~
__________________
FATE? HAH! YOU ARE MINE....
foxselina 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
MATLAB的换行的问题 billwfox MATLAB论坛 3 2009-03-06 10:27
对图像进行灰度转换,二值化,腐蚀和重采样等预处理的程序 wangbo_19860519 MATLAB论坛 1 2008-04-28 22:14
[求助]删除矩阵行的函数 joyht MATLAB论坛 4 2008-04-16 16:02
[求助]有点问题,报错不断 buaall MATLAB论坛 0 2008-03-26 22:15


所有时间均为北京时间。现在的时间是 11:55


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.