您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断队列 >

串口向单片机发送指令接受环形队列怎么理解

发布时间:2019-06-19 11:21 来源:未知 编辑:admin

  如果我发送端发给单片机5个字符怎么办。然后过一会儿在发6个字符,它不是接受的前五个字

  符加后6个字符的第一个字符混在一起了嘛,命令显然是不符合单片机的,再发6字符,又不对

  ,慢慢的不就死循环,就算我发的正确的不也不能正确识别?是不是里面要加个计时,也就是

  说我这一帧数据大约多少时间,超过时间了就判断是否符合,而不是一定要等待凑满六个字符

  2.我上面这个中断里面可以加EA=0,或者ES=0吗?关中断,进行下中断保护,中断结束后在

  data[0]=SBUF;//这个里面存储的是最新,每接受一次就往后面移位一次,不丢失旧数据

  在论坛上看到人家说接受用环形队列,用64byte的空间可以接受1K的数据展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  开两个6个数组空间,将采集的数据存在一个数组,判断起始位,和结束位,是否符合,符合就将4数据送下个数组,不符就不送下个数组.

  ea 不用,es用,传很多数据时必须用,不然会错更多追问追答追问第一次要是发了五个字符,我从什么时候开始判断起始位和结束位,是等六个字符接受完了再判断就和我说的一样会出错。追答起始位和结束位都是固定的吧,sbuf是一个一个接收的吧,如果第一个对,就继续,不对,就不接收了,如果对了就继续接收,到6个和结束位一致就存另个数组,不对就不要送了,

  要点是sbuf是一个一个接收,不是6个或五个同时接收的,追问“11 22 33 44 55 66”这六个协议字符,是一个一个,六个数据一个帧,

  如果对了就继续接收,到6个和结束位一致就存另个数组这句话应该怎么理解?我要是发送11 22 33 44 55到不了第六位呢,怎么判断,重点是什么时候判断。

  还是你指的是来一个字符判断一下?追答串口1帧就是一个字符(10,位,或别的位数)不到6个,就全不要送第二数组,继续接收

  先判断data[0]=11吗,等于继续,不等于就不送第一个数组,等于继续判断data[5]=66吗,等于送第二数组,

  主要你的程序不行,中断应该加个count++,作为接收了几个字符判断依据就可以了,前面两个问题已经解决,就剩下第三个了,接受环形队列怎么理解,怎么用的啊?

  展开全部先判断引导码,如果正确再接收,接收6个字符后,再判断协议指令,符合则做相应动作。更多追问追答追问六个字符发了五位,第一位判断肯定正确,接下来我是等接受完了在判断还是接一个判断一个?

  问题是要是发送了五位应该怎么样处理,甚至只发送了四位,三位,我应该怎么样处理,我比较困惑这个追答只要引导码唯一,引导码正确就重新接受。或者你用时间间隔控制,你发送一定是连续发的,一段时间没有收到,就重新接受。追问可以直接造中断一一判断,不对重新接受;用时间间隔好像比较烦,而且还可能用到定时器

  队列是数据结构,先进先出,可以有数组构成,或者链表构成,环形队列就是地址增到尾的时候,地址自动回到头的队列。详细的你查一下c语言数据结构,我就是从这本书看的。

http://ando2.com/zhongduanduilie/118.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有