PDA

查看完整版本 : [求助]关于串口编程的问题


foxselina
2008-06-05, 14:30
这是一个简单的程序:
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的作用。

请高手指教!

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

请高手不吝赐教!

foxselina
2008-06-06, 14:24
现在,我对timeout并不怀疑,但我对terminator越发不信任。
我将默认值也输入到程序中(包括terminator为'LF'和在fprintf中的'%s\n')。可超时依旧,我用串口调试工具可以完全接收我发送的数据,包括换行符(\n),但是主程序还是在一直运行直到timeout。所以我觉得系统根本就没有去识别最后的一个换行符(\n)。
真是奇怪了~