qe123 发表于 2011-11-3 09:05:59

求助 苹果猫 关于摘数据问题

我用的是有方的M590,模块建立完成TCPIP后给服务器发数据,首先先检查缓冲区大小,模块返回的消息和服务器给模块发送的数据有时候会在一起,得进行摘数据,我在论坛看到了你回复的帖子,思路是定时中断,环形列队,状态机。我对中断和状态机能理解,对环形列队与他俩进行配合的思路不是很了解,能讲解一下吗

Appcat 发表于 2011-11-3 09:36:51

环形队列或者叫FIFO,这个,建议你找本清华大学的《数据结构C语言版》看一下,里边有讲的。

其实就是个数组外加4个变量,一个是读取下标,一个是写入下标,一个是字符计数,一个是溢出标志。每次往里写一个字节,写入下标加1,计数加1,写入下标达到数组最大下标后归0,计数变量达到数组最大容量后溢出标志置位。读取时按字节读,每次读取完将读取下标加1,计数下标减1,读取下标达到数组最大下标后归零。
大概就是这个意思,将这个数组处理程序交给串口接收中断来处理,自己的程序就不再干涉它的运行了,只要不停的查看队列里边的计数器,一旦有字符,就读取到自己的缓冲区中进行解析。这样程序间耦合度降低,万一溢出不会跑飞,而且兼顾了外设和MCU的速度差异。

qe123 发表于 2011-11-3 09:52:39

回复【1楼】Appcat 苹果猫
-----------------------------------------------------------------------

没有贴别明白,这对摘数据有什么优势呢?

qe123 发表于 2011-11-3 13:14:10

没有领会要领
页: [1]
查看完整版本: 求助 苹果猫 关于摘数据问题