奇偶校验问题

[复制链接]
1898|6
 楼主| gxgclg 发表于 2014-2-25 18:38 | 显示全部楼层 |阅读模式
ce, CRC, rc, COM, ck
第一次接触RTU,用S52的片子,程序基本功能写好以后,只要加上奇偶校验就出问题,例如我接受到上位机的指令00 03 00 00 00 01 crc,加上奇偶校验的程序不是没反应就是应答为00 03 00 00 00 3F CRC,总是不对,我的这部分程序是借鉴网络上的的代码,如下:
        if(RI)
{
   RI=0;T
   receBuf[receCount]=SBUF;  //接收数据
   receCount++;
   if(receCount==8)command_ok=1;
   commCount=receCount;
           ACC=receBuf[receCount];
           //以下进行奇偶校验
   if(P!=RB8) js_check=2;
           receCount&=0x0f;
   dwIntTick=0;TR0=1;//接收完数据,启动接收计时,检测是否停顿超过1.5个字符时间停顿!
}
检验校验部分如下:
       js_CRC=receBuf[7]+(receBuf[6]<<8);
if((receBuf[0]==0x0b)&&(js_CRC==crc_z))//是否发给本机,并CRC正确?
{
        if(js_check==1)//奇偶校验正确?
        { 相应的操作}
只要加上奇偶校验和检测马上出问题,反馈和接受都不行
秋天落叶 发表于 2014-2-25 18:46 | 显示全部楼层
一般奇偶校验在硬件做,还要注意通讯另一端要作相应设置
无冕之王 发表于 2014-2-25 18:57 | 显示全部楼层
看不明白,为什么在软件加入奇偶校验?
pkat 发表于 2014-2-25 19:03 | 显示全部楼层
硬件串口自己可以配置为奇偶校验,不需软件干预的
RTU 11 bit 数据
1起始 + 8数据 + 1校验位 + 1停止位 = 11位
dfsa 发表于 2014-2-25 19:13 | 显示全部楼层
没看太明白
火箭球迷 发表于 2014-2-25 19:19 | 显示全部楼层
检查一下设置问题
baidudz 发表于 2014-2-25 19:28 | 显示全部楼层
无冕之王 发表于 2014-2-25 18:57
看不明白,为什么在软件加入奇偶校验?

为了防止传输出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部