打印

为什么我的485接收多字节时出错??

[复制链接]
5709|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaosuowen|  楼主 | 2010-11-13 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的RS485在上位机一个字节一个字节发送数据的时候,立马返回发送的数据都是正确的,但当多字节一起发送的时候就有问题,我本来是想上位机发送给单片机6个字节的数据,然后判断是否是自检信号,然后开始自检,但一直未能进入自检。。其中值为0x00的字节收到的正常但是0xFF等就不对了。。下面是我的发送函数
void Send_Char( char Char)
{
RS485_T;              //设置RS485为发送状态
SBUF=Char;            //发送数据
while(!TI);           //检测上一个字节是否发送完毕,及是否为发送下一字节做好准备
TI=0;                 //清楚发送中断标志位
}

相关帖子

沙发
xiaosuowen|  楼主 | 2010-11-13 17:05 | 只看该作者
Bao_R[Num_R]=SBUF;
Num_R++;                      //接收到数据需自检
RI=0;
这是我在接收中断里的语句

使用特权

评论回复
板凳
xiaosuowen|  楼主 | 2010-11-13 17:07 | 只看该作者
if((Bao_R[0]==0xFF)&&(Bao_R[1]==0xAA)&&(Bao_R[2]==0xA1)&&(Bao_R[3]==Bao_R[4]==Bao_R[5]==0x00))
{
自检
}

使用特权

评论回复
地板
xiaosuowen|  楼主 | 2010-11-13 17:09 | 只看该作者
忘了说明:我的485在主循环里面是不断设置为接收状态的只有在向上发送数据包的时候才设置为发送状态。。谢谢大家,帮忙我看看啊

使用特权

评论回复
5
lengyueyw| | 2010-11-17 15:42 | 只看该作者
看一下你的Num_R是不是定义的全局变量
如果是写一个发送字符串的函数,把Bao_R[]发到PC机上,看看数据到底是什么

使用特权

评论回复
6
风云兄| | 2010-12-4 22:12 | 只看该作者
RS-485是半双工的通讯类型,感觉楼主的问题可能出在RS-485的收发控制时序上有问题,有可能是接收数据的时候你的收发控制信号还没有来得及切换到接收状态引起的。

使用特权

评论回复
7
lxpkaka| | 2010-12-22 10:48 | 只看该作者
自发自收一般要用2个485做吧

使用特权

评论回复
8
chunyang| | 2010-12-22 13:30 | 只看该作者
同时使能收发端就是自发自收。

使用特权

评论回复
9
XZL| | 2010-12-23 11:28 | 只看该作者
应该采用上位机查询下位机方式进行通讯!下位机接到指令后,要加入延时,确保主机进入接收状态!
485做双向通讯,关键还是协议!

使用特权

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

本版积分规则

1

主题

160

帖子

1

粉丝