查看: 11976|回复: 16

SerialApp例子详细分析及流程图

[复制链接]
shamiexiaotan 发表于 2011-7-25 22:27:30 | 显示全部楼层 |阅读模式
本帖最后由 shamiexiaotan 于 2011-7-26 11:13 编辑

还是这张图哈,很关键,我自己画的,下面说一下每一步的具体流程及含义。
第一步,PC机从串口调试助手发送了数据,则肯定会最终发送到CC2530的接受缓冲区里面,虽然该缓冲区每次只能存放一个字节,(这里面有软件部分的处理,其实就是开辟一块缓冲区来存放数据)读者完全可以想象成数据就是发送到缓冲区里面了。
第二步,收到数据后肯定是要将数据拷贝出来,拷贝到一个数组里面,这个数组的名字叫SerialApp_TxBuf,但是,我们发送的数据是从SerialApp_TxBuf[1]开始存放的。
第三步:这个数组的第0个位置SerialApp_TxBuf[0]存放的是发送的序列号SerialApp_TxSeq。
第四步,调用发送函数将SerialApp_TxBuf这个数组发送出去,该数组中既包含我们实际想发送的数据也包含了发送的序列号。问题是这个发送的序列号有什么用处呢????

第五步,另一个zigbee设备接收到数据。
第六步,将数据放在一个缓冲区里面。
第七步,将数据写入单片机的Tx buf,其实这样就可以将数据发送到PC机了,这样我们就可以从串口调试助手看到我们发送的数据了,不过需要注意的是,我们实际发送的数据是从第2个位置开始存放的,所以将数据写入单片机的Tx buf时要将第2个位置作为数据的起点。同时程序中还定义了一个接收序列号SerialApp_RxSeq,在收到数据后就是将原来的发送序列号赋值给了接收序列号了,原因是什么呢?
其实这里加了个保险措施,其实就是发送设备将发送序列号加在数据中一块发送,接收设备接收到数据后,将发送序列号回传给发送设备,发送设备将该序列号和发送时的序列号比较一下,如果相等则说明数据发送成功。
第八步,通过上面的分析可知,接收设备收到数据后,将接数据有关的状态以及接收序列号(其实就是发送设备的发送序列号)等信息放在一个4字节的数组里面,然后将该数组发送给发送设备。
第九步,发送设备接收到接收设备回传的响应信息后,将发送序列号和接收序列号比较,如果相等,则说明原来的数据发送成功了。
其实这里的讲解完全是从通信的角度讲解,忽略了所有的函数细节,可能不是很好理解。
不过,这段时间的zigbee学习,我的深切体会是:资料太少,遇到问题不晓得到哪里求助,虽然有些问题很幼稚,很无知,但是正是这些看似幼稚与无知的问题困扰着初学者,腐蚀初学者的学习兴趣,但是也正是这些看似幼稚与无知的问题,给了我们学习的动力。大家可以看看我的帖子,很多帖子只是我想到这个问题了就发帖子,其实也是记录自己学习过程的一些足迹吧,祝福每一个为Zigbee学习而绞尽脑汁但有貌似无助的人,祝福你,你会越学越觉得zigbee还是可以学的懂的。


当然只是功能上的分析,忽略了所有的函数细节,请谅解,但愿能帮助初学者吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
outman 发表于 2011-7-26 10:54:48 | 显示全部楼层
感谢楼主的共享精神,已为您增加5点威望值。期待楼主后续作品哦。
另外,希望楼主在做pdf的同时,能将文字部分也发到贴子中来,这样很容易被搜索引擎收录,会有更多的人通过百度、谷歌,找到楼主的贴子,让更多人受益。
liangliangyw 发表于 2011-10-12 18:24:28 | 显示全部楼层
多看多学,感谢分享
hygrand 发表于 2011-10-14 14:05:52 | 显示全部楼层
回复 1# shamiexiaotan


    你这个例程在板子上试验成功了吗 能发给我一个例程吧 我的好像不知道被我改动了哪里 串口发数给CC2530EB 另外一个节点收不到
jian7223157 发表于 2011-12-20 16:21:20 | 显示全部楼层
呵呵,谢谢楼主,我用的是cc2430不知有没有用
Arlene 发表于 2012-3-3 17:25:06 | 显示全部楼层
拜读楼主大作!
リー环 发表于 2012-3-5 16:43:33 | 显示全部楼层
讲解很详细 ~~ 顶
sentmail 发表于 2012-3-9 22:51:20 | 显示全部楼层
学习中,谢谢分享
zxb1717 发表于 2012-5-7 13:33:41 | 显示全部楼层
绝对的基础实战经验啊,谢谢楼主!
bluesnowbird 发表于 2012-5-14 11:55:50 | 显示全部楼层
看看那  谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表