查看: 36380|回复: 53

如何借用MT函数来使用协议栈串口

[复制链接]
kennan 发表于 2011-8-17 17:29:33 | 显示全部楼层 |阅读模式
本帖最后由 kennan 于 2011-8-20 22:03 编辑

2530+zstack2.3.1-1.4.0适用
文中为了清晰,使用了颜色,我就不直接粘贴了,而是上传文档。看完了要顶噢。又修改了一下,增加了一个处理串口数据并写回uart函数,不过我没办法删除原来文件,所以你能看到两个,呵呵,自己区分吧。

好人做到底,我把按照上面思想修改的GenericApp.c文件也传上来吧,你只要用我这个文件替换你原来的协议栈例子genericapp.c就可以了。我增加了几处内容,每一处都是用
  /*****************************************
  *Added by kennan for demonstrating UART begin.
  ******************************************/


  /*****************************************
  *Added by kennan for demonstrating UART end.
  ******************************************/
包围的,自己找找看吧。另外我把MT_UART.c中的void MT_UartProcessZToolData ( uint8 port, uint8 event )文件中
/* Make sure it's correct */
        //if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ + LEN_Token) == FSC_Token))
        {
          osal_msg_send( App_TaskID, (byte *)pMsg );
        }
        //else
        {
          /* deallocate the msg */
         ;// osal_msg_deallocate ( (uint8 *)pMsg );
        }
这一段进行了注释,即不需要进行校验,如果你想校验,串口发来的数据也要先算好校验发过来。
另外,编译器设置要加上ZTOOL_P1,其余关于MT的都可以去掉,这么使用串口就不能再用作MT功能了。
试验结果:


串口输入数据为:FE 05 01 02 03 04 05 06 07 00
即:FE是帧头,05是从03开始位置的数据字节数,01 和02 可以看作命令,03,04,05,06,07是5个数据负载,00这个地方应该是校验和,我已经禁止校验了,但是还是要保留这个字节位置,你可以输入任意数。

串口输出数据:05 01 02 03 04 05 06 07
因为void MT_UartProcessZToolData ( uint8 port, uint8 event )函数已经把帧头和校验和字节去掉了,所以发上来这样的数据。

本帖子中包含更多资源

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

x
crazypy02 发表于 2011-8-17 17:52:31 | 显示全部楼层
恩,其实通过你 《Z-STACK 2006协议栈硬件驱动的精简》这篇文章中也可以实现对串口的简单操作,但用ZIGBEE自带的串口API操作更为规范,学习了~~顶你!
huanjue562008 发表于 2011-8-21 14:01:11 | 显示全部楼层
不错,加油毛毛老师
jack0 发表于 2011-8-29 16:55:51 | 显示全部楼层
顶一个。。实验步骤不对,再次试试
xingmuduishui 发表于 2011-11-5 11:17:10 | 显示全部楼层
非常感谢!
文中写的是zstack2.3.1-1.4.0适用,不知ZStack-CC2530-2.3.0-1.4.0能否适用?论坛中找不到2.3.1-1.4.0协议栈的下载呀?
另外将此程序用在别的2530的板子上行吗?程序中哪里说明波特率设置的问题?原来的协议栈默认就是38400了?
我按照您的方案改动了,协议栈是ZStack-CC2530-2.3.0-1.4.0,波特率调的跟图上一样了,PC上还是收不到数据。
串口助手接不到的感觉真不好,只有接收到了才知道以后怎么调整呀..头疼,求回复。谢谢!
change_ty 发表于 2011-11-15 12:47:24 | 显示全部楼层
本帖最后由 change_ty 于 2013-5-28 15:30 编辑

学习了 不错
 楼主| kennan 发表于 2011-11-15 15:18:05 | 显示全部楼层
毛毛老师 强烈要求加QQ啊   !!!我的QQ  264853701   毛毛老师就加我一下吧
change_ty 发表于 2011-11-15 12:47



    俺要是在线,有问题我就会回答的。加了好友不在线也没用啊。
change_ty 发表于 2011-11-15 20:49:18 | 显示全部楼层
回复 7# kennan


    毛毛老师,是这样子的。   我把sensorDemo那部分串口的功能整合到sampleApp上面之后,  sampleApp 的程序 也能在 monitor上显示出 球型的样子了。  但是串口调试工具上,每次都会收到相同的两个数据包啊。    而且 除了 sensorDemo  固有的那份数据包之外,  背后还会加一串 其他的  也是以FE开头的,   进过我初步的研究, 我发现时 sampleAPP他原有的 MT_UART的那部分代码在搞鬼。      还有很多  我这边也说不清楚,  老师如果有空的话  我真想打个电话请教你一下。。
 楼主| kennan 发表于 2011-11-15 21:20:35 | 显示全部楼层
回复  kennan


    毛毛老师,是这样子的。   我把sensorDemo那部分串口的功能整合到sampleApp上面之后 ...
change_ty 发表于 2011-11-15 20:49



    compiler选项里面别编译MT相关的东西就行了
change_ty 发表于 2011-11-15 22:58:51 | 显示全部楼层
我根据这个帖子  为什么实验做不出来啊 串口发送没反应啊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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