2274|5

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【TI首届低功耗设计大赛】为LaunchPad添加AT指令解析 [复制链接]

相关代码和介绍可以参考我之前的贴子,这里只是简单的说明修改的地方和一个测试AT指令,当然这里的AT回显部分未做,是直接在命令行中echo的。测试支持两个AT+H和AT+MODE,分别是帮助和LED运行模式控制

argv和argc解析函数
  1. /**
  2. * @brief  make_argv
  3. * @note   ARGV执行
  4. * @param  none
  5. * @retval none
  6. */
  7. int
  8. make_argv (char *cmdline, char *argv[])
  9. {
  10.         char argvTAB;
  11.     int argc, i, in_text;
  12.    
  13.     /*
  14.      * Break cmdline into strings and argv
  15.      * It is permissible for argv to be NULL, in which case
  16.      * the purpose of this routine becomes to count args
  17.      */
  18.     i                 = 0;
  19.     argc         = 0;
  20.     in_text = FALSE;
  21.    
  22.     /* getline() must place 0x00 on end */
  23.     while (cmdline[i] != '\0') {
  24.             if (argc == 1) {
  25.                     argvTAB = '=';
  26.             } else {
  27.                     argvTAB = ',';
  28.             }
  29.         if ( (cmdline[i] == argvTAB) || (cmdline[i] == '\t') ) {
  30.             if (in_text) {
  31.                 /* end of command line argument */
  32.                 cmdline[i] = '\0';
  33.                 in_text = FALSE;
  34.             } else {
  35.                 /* still looking for next argument */
  36.                
  37.             }
  38.         } else {
  39.             /* got non-whitespace character */
  40.             if (in_text){

  41.             } else {
  42.                 /* start of an argument */
  43.                 in_text = TRUE;
  44.                 if (argc < UIF_MAX_ARGS) {
  45.                     if (argv != NULL) {
  46.                         argv[argc] = &cmdline[i];
  47.                     }
  48.                     argc++;
  49.                 } else {
  50.                     /*return argc;*/
  51.                     break;
  52.                 }
  53.             }
  54.             
  55.         }
  56.         /* proceed to next character */
  57.         i++;   
  58.     }
  59.     if (argv != NULL) {
  60.         argv[argc] = NULL;
  61.     }
  62.     return argc;
  63. }
复制代码



AT+MODE实现
  1. /**
  2. * @brief  uif_cmd_mode
  3. * @note   MODE命令
  4. * @param  none
  5. * @retval none
  6. */
  7. void
  8. uif_cmd_mode (int argc, char **argv)
  9. {
  10.     char runMode[10];
  11.     char runFreq[10];
  12.    
  13.     if (argc == 1) {
  14.             if (ledMode == 0){
  15.                     strcpy(runMode,"off");
  16.             } else if (ledMode == 1){
  17.                     strcpy(runMode,"on");
  18.             } else if (ledMode == 2){
  19.                     strcpy(runMode,"toggle");
  20.             } else {
  21.                     return;
  22.             }
  23.             _itoa(ledFreq, runFreq, 10);

  24.             printf("+ok=%s,%s\r\n\r\n", runMode, runFreq);
  25.         return;
  26.     }
  27.    
  28.     if (argc != 3) {
  29.         printf("Error: Invalid argument list\r\n");
  30.         printf("\r\n");
  31.         return;
  32.     }

  33.     if ( ((argc-1-1) >= UIF_CMDTAB[1].min_args) && ((argc-1-1) <= UIF_CMDTAB[1].max_args) ) {
  34.             if (argv[1] != NULL) {
  35.                      if (strcasecmp("off", argv[1]) == 0){
  36.                              ledMode = 0;
  37.                      } else if(strcasecmp("on", argv[1]) == 0){
  38.                              ledMode = 1;
  39.                      } else if(strcasecmp("toggle", argv[1]) == 0){
  40.                              ledMode = 2;
  41.                      } else {
  42.                              printf(INVOPT, argv[1]);
  43.                              printf("\r\n");
  44.                              return;
  45.                      }
  46.             }

  47.             if(argv[2] != NULL){
  48.                     ledFreq = _atoi((char*)argv[2], 10);
  49.                     if (ledFreq > 50) {
  50.                             ledFreq = 50;
  51.                             printf(INVOPT, argv[2]);
  52.                             printf("\r\n");
  53.                             return;
  54.                     }
  55.             }
  56.             printf("+ok\r\n\r\n");
  57.             return;
  58.     } else {
  59.             printf(INVARG, argv[0]);
  60.             printf("\r\n");
  61.             return;
  62.     }
  63. }
复制代码



测试命令行:


相关功耗测试/功耗模式配置查询等AT指令待实现

最新回复

谢谢楼主了啊 方便了啊   详情 回复 发表于 2014-10-14 08:33
 
点赞 关注
个人签名电工

回复
举报

3028

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
相关代码和介绍可以参考我之前的贴子,
楼主可以给个链接啊

点评

参考 https://bbs.eeworld.com.cn/thread-447473-1-1.html  详情 回复 发表于 2014-10-14 08:31
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
非常不错。
 
 
 

回复

440

帖子

0

TA的资源

一粒金砂(高级)

4
 
支持一个!!!
 
个人签名
I like you, but just like you !
纵然万劫不复,纵然相思入骨,
我也待你眉眼如初,岁月如故!
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
凤凰息梧桐 发表于 2014-10-13 09:15
相关代码和介绍可以参考我之前的贴子,
楼主可以给个链接啊

参考
https://bbs.eeworld.com.cn/thread-447473-1-1.html

点评

谢谢楼主了啊 方便了啊  详情 回复 发表于 2014-10-14 08:33
 
个人签名电工
 
 

回复

3028

帖子

0

TA的资源

五彩晶圆(初级)

6
 
lyzhangxiang 发表于 2014-10-14 08:31
参考
https://bbs.eeworld.com.cn/thread-447473-1-1.html

谢谢楼主了啊 方便了啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表