打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
串口应用总结
最近总是碰到很多人问我串口的问题,很多人会纠结于一些细节性的东西,刨根问底当然好,但在实际的开发过程中需要你会用,不可能给你那么的多的时间学那么多无关的东西,总之一句话:开发注重于框架的掌握,具体在开发中遇到的细节问题再拿出刨根问底的功夫出来,这样才会事半功倍。

(支持原创,如需转载,请注明地址:http://blog.sina.com.cn/litianping0709 作者:叶雨荫城(阿雨))

 

  其实zstack的串口应用起来相当简单,由于时间关系,我对串口的应用只做一个简单的讲解,给大家一个框架,实际应用中大家自己酌情掌握,当然有错的话希望大家指正,只是个人理解。

 

  在zstack中,串口应用主要有三种方式:
 (1)与zstack交互进行通信:需要考虑到系统通信的数据格式,这种应用一般更加侧重于与zstack交互。

举个例子,在协调器中我们需要利用PC给zstack发出命令需要其执行相应的命令时,这个时候我们只要在协调器的编译项加上ZTOOL_P1 MT_TASK两个选项即可,如果这个时候如果需要MT层和应用层进行交互处理用户数据(具体用户数据的格式在zstack中的串口文档中有定义,大家可以自行查看),就必须在应用层中加入

case MT_SYS_APP_MSG:  // Z-Architect Messages

(具体为什么加这个如果还不清楚把zstack OSAL运行机制搞清楚之后再开发吧。)

这个时候才能串口发送的数据经过MT层处理后送到我们的应用层,这是接收过程,发送过程直接调用HalUARTWrite()函数即可。

 

(2)自己的串口应用,与zstack命令格式无关,但不想自己配置串口,想偷懒:这种情况下也很简单,与上述编译项不同的是,此时需要加入的编译项为:MT_TASK ZAPP_P1,当中的串口号根据实际情况而定,这个时候只要加入编译项其实就行了,在应用过程中如果想在应用层处理串口的数据,和上述情况类似,这时候需要在应用层中加入的东西有:

#include "SPIMgr.h"头文件

....

#if defined (ZAPP_P1)
  SPIMgr_RegisterTaskID(SampleApp_TaskID);//在MT层注册
  SPIMgr_ZAppBufferLengthRegister(7);   // BUFFER大小
  #endif

.....

case SPI_INCOMING_ZAPP_DATA:
          Bindnode_SerialMSGCB(MSGpkt);//自己的串口数据处理函数
          #if defined(ZAPP_P1)
          SPIMgr_AppFlowControl ( SPI_MGR_ZAPP_RX_READY );//流控制
          #endif 
          break;

......

  这是最主要的三步,完成上述添加,大家就可以使用串口了。

(需要主要注意的是一个串口不能同时实现上面的两个功能,一定要实现上述ZAPP_Px编译和ZTOOL_Px同时存在的话,那么x一定不能相同,即要使用两个不同的串口,否则会出现冲突。)

 

(3)可能瞧不起zstack定义好的串口,自己单独写一个玩玩,或者想另外加一个串口实现双串口功能,这个很简单,大家看看serialapp例子就行,我不细说。

 

  就说这么多,可能自己理解有误,但还是希望对大家有所帮助。具体细节大家在自己的程序里仔细琢磨,不懂的话可以和我交流,博客上有我的联系方式。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MT与z
[原创]关于PDU模式接收短信,千万可别被误导
dd命令的高级应用
2019年混合云发展:前景广阔 巨头混战 SD-WAN成重要推手
MCGS通讯状态
空间站WiFi覆盖 带你了解带路由器功能的WiFi模块
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服