回 帖 发 新 帖 刷新版面

主题:求助,串口读不到数据

我是用串口线连接两台计算机的
一台用来发送
一台用来接收

然后在发送端程序:
clear;
s=serial('com2','baudrate',2400);
fopen(s);
fprintf(s,'abc','async');
fclose(s);
delete(s);
clear s;

接收端程序:
clear;
s=serial('com2','baudrate',2400);
fopen(s);
a=fscanf(s);
fclose(s);
delete(s);
clear s;

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

回复列表 (共5个回复)

沙发

么人知道么?
谁懂一点点的啊,帮忙下吧~

板凳



我估计是时间的问题
写入是有一定时间的~~~


你可以用设定写入和读出数据个数的方法来试一下
~~~

3 楼

[quote]

我估计是时间的问题
写入是有一定时间的~~~


你可以用设定写入和读出数据个数的方法来试一下
~~~[/quote]
怎么试?
我写入时间有改变,就是设置为0.5S,5S和10S的 都不可以.
都是一样的错误.[em10]

4 楼


clear,close all;
n=0:100;f1=300;f2=800;num=4192;
fs=4000;
s1=64*sin(2*pi*f1/fs*n);
s3=64*sin(2*pi*f2/fs*n);
signal=s1+s3+128;
A=round(signal/2);
L=length(A);
s=serial('COM1'); %创建COM1串口对象,并以s标识它
s.parity='even';%设置校验方式为偶校验
s.StopBits=1;%设置停止位为1位
s.BaudRate=9600; %波特率为9600b/s
s.InputBuffersize=1024;%设置输入缓冲区大小为256字节,缺省值为512字节
s.OutputBufferSize = 1024;%输出缓冲区为256B,缺省值为512B
s.ReadAsyncMode ='continuous';% 在异步通信模式方式下, 读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动存入缓存区
fopen(s);%打开串口
B=[10 85 L];
fprintf(s,B);%发射请求单片机接收数据的握手信号以及请求接收数据数量
% hold time(5);
fprintf(s,A);%向串口发送数据
M=input('如果需要接收卷积结果请输入:1\n');
if M==1
    C=[10 119 L];
    fprintf(s,'%s',C);%发射请求单片机发送数据的握手信号以及请求发送数据数量
%     hold time(5);
    yn=fread(s,L,'uint8');
end    
fclose(s);
delete(s);
clear s;
这是我调试通过的

5 楼

这是发送的程序么?
那不是还要在接收端编写程序么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册