result = paramBuffer[i] -'A'+10;

}

else

{

//出现范围之外的数据,返回1

return 1;

}

valueResult += (u32)(result*fac);

fac /= 16;

}

//计算完成,检测参数是否超过范围

if(valueResult > 0xff)return 1;//参数错误

else

{

*value = (u8)valueResult;

return 0;

}

}

else

{

//参数开头不对

return 1;

}

}

//从命令字符串中获取参数并转换参数,将0x格式的字符串转换为数值 成功返回0 失败返回1

u8 CommandGetParamToHexU16(u16* value,u8 index)

{

u8 result;

u32 valueResult = 0;

u8 i = 0;

u32 fac = 1;

result = CommandGetParamStr(paramBuffer,PARAM_COVERT_MAX_LENGTH,&paramLength,index);

if(result == 0)return 1;//找不到这么多参数

//检测参数长度,因为开头必须为0x,所以长度必须为3以上

if(paramLength <= 2)return 1;//失败

//计算系数

for(i = 3; i < paramLength; i++)

{

fac *= 16;//因为0x占用了两个字节 第一未为1 所以乘法运算从第三个开始

}

//检测开头是否正确 0x

if(paramBuffer[0] == '0' &&(paramBuffer[1] == 'x'||paramBuffer[1] == 'X'))

{

//检测每一位数据是否正确并计算最终值

for(i = 2; i < paramLength; i++)

{

if(paramBuffer[i] >= '0' && paramBuffer[i] <= '9')

{

result = paramBuffer[i] -'0';

}

else if(paramBuffer[i] >= 'a' && paramBuffer[i] <= 'f')

{

result = paramBuffer[i] -'a'+10;

}

else if(paramBuffer[i] >= 'A' && paramBuffer[i] <= 'F')

{

result = paramBuffer[i] -'A'+10;

}

else

{

//出现范围之外的数据,返回1

return 1;

}

valueResult += (u32)(result*fac);

fac /= 16;

}

//计算完成,检测参数是否超过范围

if(valueResult > 0xffff)return 1;//参数错误

else

{

*value = (u16)valueResult;

return 0;

}

}

else

{

//参数开头不对

return 1;

}

}

//从命令字符串中获取参数并转换参数,将0x格式的字符串转换为数值 成功返回0 失败返回1

u8 CommandGetParamToHexU32(u32* value,u8 index)

{

u8 result;

u32 valueResult = 0;

u8 i = 0;

u32 fac = 1;

result = CommandGetParamStr(paramBuffer,PARAM_COVERT_MAX_LENGTH,&paramLength,index);

if(result == 0)return 1;//找不到这么多参数

//检测参数长度,因为开头必须为0x,所以长度必须为3以上

if(paramLength <= 2)return 1;//失败

//计算系数

for(i = 3; i < paramLength; i++)

{

fac *= 16;//因为0x占用了两个字节 第一未为1 所以乘法运算从第三个开始

}

//检测开头是否正确 0x

if(paramBuffer[0] == '0' &&(paramBuffer[1] == 'x'||paramBuffer[1] == 'X'))

{

//检测每一位数据是否正确并计算最终值

for(i = 2; i < paramLength; i++)

{

if(paramBuffer[i] >= '0' && paramBuffer[i] <= '9')

{

result = paramBuffer[i] -'0';

}

else if(paramBuffer[i] >= 'a' && paramBuffer[i] <= 'f')

{

result = paramBuffer[i] -'a'+10;

}

else if(paramBuffer[i] >= 'A' && paramBuffer[i] <= 'F')

{

result = paramBuffer[i] -'A'+10;

}

else

{

//出现范围之外的数据,返回1

return 1;

}

valueResult += (u32)(result*fac);

fac /= 16;

}

//计算完成,检测参数是否超过范围

if(valueResult > 0xffffffff)return 1;//参数错误

else

{

*value = (u32)valueResult;

return 0;

}

}

else

{

//参数开头不对

return 1;

}

}

恩,到这里基本就实现这个shell了,现在增加命令以及增加命令响应函数是不是就简单多了,反正我是觉得简单多了

项目demo位置

http://download.csdn.net/detail/dengrengong/8542891

这个项目里面使用了shell和之前使用的动态内存,可以参考

[1] [2] [3]

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

单片机shell命令_单片机裸机下写一个自己的shell调试器相关推荐

  1. UEFI Shell命令详解,自写一个UEFI Shell命令

    首先,我们从BIOS进入Shell,输入help命令查看帮助信息 Shell:helpacpiview - Display ACPI Table information. alias - Displa ...

  2. 单片机shell命令_单片机的DB指令使用

    你好: 很多网友出现的蓝屏(0x00390b67指令引用的0x80391510内存不能为read )的问题,总结出了以下解决办法,看看下面您的电脑是哪方面出的问题,只有对症下药问题才能解决.这个问题的 ...

  3. output怎么用_如何用 C++ 写一个可编程软件渲染器?

    今天你想用最新的 D3D12 画一个三角形,少说也要上千行代码了,对于初学者来讲,这个门槛是非常高的,太多干扰了,而一千多行代码,已经足够你重头实现一个简易版 D3D 了,为什么不呢?比起从图形 AP ...

  4. 【Linux操作系统】--攥写一个简易的shell工具

    目录 做一个简易的shell 第一步:打印提示符,在同一行打印出提示符 第二步:获取标准输入,获取命令字符串 第三步:将字符串分割,解析字符串 第四步:替换进程,执行第三方命令 3.5.执行第三方命令 ...

  5. mysql执行shell命令_关键Docker命令:使用Docker必须掌握的公认宝典

    读者可以将下面的命令纲要当作成功使用Docker必须掌握的公认宝典--从搜索和构建镜像到创建自己的Dockerfile.我们先看一些简单的命令,然后在此基础上接触更复杂的命令. 7.1.1 docke ...

  6. cmd管道无法接收特定程序返回值_渗透不会反弹shell?来教你写一个cmd的shell

    渗透不会反弹shell?来教你写一个cmd的shell 包含的库: #include #include #include #include #include #pragma comment(lib, ...

  7. a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换...

    package com.Summer_0424.cn;/*** @author Summer* a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换?*/ public cl ...

  8. 用Qt写一个简单的音乐播放器(四):歌曲浏览、上一曲、下一曲

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  9. python写音乐播放器_AJ Kipper:用Python写一个简易的MP3播放器

    用Python写一个简易的MP3播放器 前言 最近在学习Web.py框架的时候,了解了基本的Python连接数据库(MySQL)的方法.学完后,总想用它来干点啥,于是,就想能不能写一个MP3播放器.一 ...

最新文章

  1. SPU表管理之保存SPU表数据
  2. HDU-1394-Minimum Inversion Number
  3. cadence一些术语
  4. python 字典定义日志用法_python中字典(Dictionary)用法实例详解
  5. html input file 置空,清空 HTML File Input
  6. super go_Go 简单性的价值:来自对 Go 倍加青睐的谷歌软件工程师的自述
  7. SPOJ - SUBLEX 【后缀自动机】
  8. CentOS查看CPU,内存,位数行等信息命令
  9. js中事件处理程序的内存优化
  10. 高德行政区划地图,区域划线,行政区划浏览
  11. spring三级缓存
  12. Fujitsu DPK8310Tax 打印机驱动
  13. 教您用公式编辑器打恒不等于符号
  14. 【老九】【C语言】CodeBlocks安装文档
  15. 移动端touch事件和鼠标事件
  16. 分享一款统计手机使用时间的APP,帮助集中注意力,拒绝手机上瘾,支持双端
  17. java xml sql_走进 SQL/XML
  18. @新手文案,学会“五感写作法”,就能描写好“细节”!
  19. 无法执行磁盘检查,因为windows无法访问该磁盘的一种解决思路
  20. 偶尔出现404怎么回事?

热门文章

  1. 纯手写实现HashMap
  2. 软件工程师工作内容和从业要求
  3. ASP.NET MVC之文件上传【一】(八)
  4. Redis管理各类型存储数据命令
  5. box-sizing的不同属性值间的区别
  6. BZOJ4278 : [ONTAK2015]Tasowanie
  7. oracle数据库使用之数据查询入门
  8. C# 连接 Sqlserver2005 Analysis Service的总结
  9. IE6和其他浏览器的css样式不同
  10. jquery查找document节点