登录论坛

查看完整版本 : [求助]串口接收不到数据


slisent
2008-04-02, 11:47
我是用串口线连接两台计算机的
一台用来发送
一台用来接收

然后在发送端程序:
clear;
s=serial('com2','baudrate',1200);
s.Parity='none' ; % Set parity as none
s.Databits=8 ; % set the number of data bits
s.StopBits=1; % set number of stop bits as 1
s.InputBufferSize=512;
s.Timeout=5;
s.Terminator='LF';
s.FlowControl='none';
s.OutputBufferSize=512;
fopen(s);
s.status;
fprintf(s,'abc','async');
fclose(s);
delete(s);
clear s;

接收端程序:
clear;
s=serial('com2','baudrate',1200);
s.Parity='none' ; % Set parity as none
s.Databits=8 ; % set the number of data bits
s.StopBits=1; % set number of stop bits as 1
s.InputBufferSize=512;
s.Timeout=5;
s.Terminator='LF';
s.FlowControl='none';
s.OutputBufferSize=512;
fopen(s);
s.status;
a=fscanf(s);
fclose(s);
delete(s);
clear s;

结果超时的时间到了,还读不到数据,这是为什么啊?
谁帮忙看下?
谢谢了

slisent
2008-04-06, 09:23
有没人知道什么错误的啊.帮忙看下呀

slisent
2008-04-09, 11:58
怎么没人理会呢?

未注册
2008-04-19, 11:53
1.com口定义的有问题,一般电脑上的com口只有一个是"com1",这个可以在电脑的硬件管理器里查看.
2.fclose(s);
delete(s);
clear s;
这几句不能紧接着前面数据接收和发送执行,因为,发送和接收数据需要一定的时间间隔,太快的结束对象和删除对象是不行的.
3.连接两台电脑要用交叉的串口线"NULL MODEM CABLE".

用你上面写的语句,我已经调试成功了,你再试试.

foxselina
2008-06-05, 14:17
我的想法和楼上的相同,但有一点我不能明白,为何程序在执行到fprintf和fscanf时就会报错,说是在读/写过程中超时。
超时倒底是个什么概念?要设多长时间才不会超时呢?