发新帖我要提问
12
返回列表
打印

51串口中断问题,发送命令后没有返回命令,麻烦大家帮我解决下谢谢!

[复制链接]
楼主: time_12
手机看帖
扫描二维码
随时随地手机跟帖
21
time_12|  楼主 | 2013-9-26 16:32 | 只看该作者 回帖奖励 |倒序浏览
yangfan19641964 发表于 2013-9-26 15:56
你的问题十有**是我说的。开机时由于RXD上的纹波,串口中断已视为收到若干字节。另外,在通讯中需要把一帧 ...

01 00 00 00 00 00 00 00 00 00 00 FC  这个命令最后一位不固定,有的时候是FF 有的时候是 FC

使用特权

评论回复
22
time_12|  楼主 | 2013-9-26 16:35 | 只看该作者
yangfan19641964 发表于 2013-9-26 15:56
你的问题十有**是我说的。开机时由于RXD上的纹波,串口中断已视为收到若干字节。另外,在通讯中需要把一帧 ...

不好意思,我忘开电源了:(

使用特权

评论回复
23
time_12|  楼主 | 2013-9-26 17:12 | 只看该作者
yangfan19641964 发表于 2013-9-26 15:56
你的问题十有**是我说的。开机时由于RXD上的纹波,串口中断已视为收到若干字节。另外,在通讯中需要把一帧 ...

我刚刚测试一下 if(0x69==jiaoyan1(3)){
                          read_flag=1; }  //就置位取数标志 。  它没有运行,或者是运行的不对

使用特权

评论回复
24
yangfan19641964| | 2013-9-26 17:14 | 只看该作者
怎么括号里又改成了3?不是应该是4吗?

使用特权

评论回复
25
yangfan19641964| | 2013-9-26 17:16 | 只看该作者
unsigned char jiaoyan1 (unsigned int m)        // 校验函数
{
int i,buf;
buf=read_buf[1];   
for(i=2;i<=m;i++)
buf=buf^read_buf[i];
return buf;

}

发的命令:AA 03 E0 8A 69 CC
回的命令:AA 0A EA 00 28 01 02 01 00 00 01 CB CC

你是去掉“开始”与“结束”,其余所有字节异或  1~4

使用特权

评论回复
26
time_12|  楼主 | 2013-9-27 10:07 | 只看该作者
yangfan19641964 发表于 2013-9-26 10:39
是不是开机从来就没对过?
有一个可能:开机时由于电源抖动,在RXD有一串脉冲,单片机已进入串口中断收到数 ...

大虾好像是你说的这个原因,现在就是发送时30秒后有返回命令,这样发送3次(每次都是30秒)之后就好了,发送马上就有一个返回命令,不知道是什么原因

使用特权

评论回复
27
q3742829| | 2013-9-27 11:15 | 只看该作者
学习学习

使用特权

评论回复
28
time_12|  楼主 | 2013-9-27 14:25 | 只看该作者
yangfan19641964 发表于 2013-9-26 17:14
怎么括号里又改成了3?不是应该是4吗?

我开始写错了,后来检查出来了应该是3

使用特权

评论回复
29
time_12|  楼主 | 2013-9-27 15:41 | 只看该作者
yangfan19641964 发表于 2013-9-26 15:56
你的问题十有**是我说的。开机时由于RXD上的纹波,串口中断已视为收到若干字节。另外,在通讯中需要把一帧 ...

或者是等待3分钟左右,发送命令也是马上就有返回

使用特权

评论回复
30
time_12|  楼主 | 2013-10-9 11:14 | 只看该作者
定义重复,造成校验结果不对

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则