赤裸裸开源了!远程(rs485)控制雨刷开关

2020-01-20 19:15发布

本帖最后由 coltex 于 2014-11-17 22:19 编辑

离开原来的行业已经有好多年了,做过的小项目分享出来,大家互相学习一下,借鉴一下思路。可以变通的别的控制项目上
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
100条回答
李程宏
1楼-- · 2020-01-30 15:59
谢谢分享,mark
konger2012
2楼-- · 2020-01-30 18:55
不实用,还用DELAY ;另外如果第一次发的码如果是发一个或者是两个,比如就发一个0XA2,程序中RxBuf[rr++]=SBUF; 判断为正确后退出,此时rr=1,后面假如串口发出一段有效的数据后,楼主得串口还能解析成功吗?我看是不行,因为此时进去后rr是从1开始加,不是0开始加,所以出错(实际不应该出错);请楼主分析一下
coltex
3楼-- · 2020-01-30 21:48
konger2012 发表于 2014-11-20 12:26
不实用,还用DELAY ;另外如果第一次发的码如果是发一个或者是两个,比如就发一个0XA2,程序中RxBuf[rr++]=S ...

好多年的程序了,串口接收哪里有delay了?这个是配合协议做的,还带校验 ,地址判断 ,首字节判断,包含了排除误码,如果有一个条件不符合,数据就是不正确的(包含硬件通讯干扰造成数据),就舍弃了。
coltex
4楼-- · 2020-01-31 00:07
 精彩回答 2  元偷偷看……
coltex
5楼-- · 2020-01-31 01:17
konger2012 发表于 2014-11-20 12:26
不实用,还用DELAY ;另外如果第一次发的码如果是发一个或者是两个,比如就发一个0XA2,程序中RxBuf[rr++]=S ...

你说的这种情况,你觉得符合pp pd  协议 吗?  如果不符合协议的首字节,rr 已经置为0,再下来判断地址,地址不对,数据也不能要啊,就算碰巧对了,还有最后一步 校验接收数据 呢?  做到这3步骤,才能算1次有效的数据。
konger2012
6楼-- · 2020-01-31 05:12
不是说接收有DELAY,而是说接收和发射转换的时候有,如果有按键等其它操作那就不好了;另外如果串口第一次只发了个0xA0,接收当然是认为成功的,case:
             if  (RxBuf[0]== 0xA0)   
                       AutoSpot=1;        //P
            else if  (RxBuf[0]== 0xFF)   
                    AutoSpot=2;        //D
          else
            {
             rr = 0;                                    //清0
            }       
         break;
此时是不是RR= 1呢?
如果我等再发一串数据0xa0......,当然这串数据是符合楼主的协议的,既然符合是否应该动作呢?但是因为没有清RR,所以接收错误。当然了,一般也不会这么去发数据了,如果有呢?

一周热门 更多>