并口定义及其编程基础之四:IIC调试工具的命令解析及使用
来源:互联网 发布:第三方javascript编程 编辑:程序博客网 时间:2024/06/05 02:43
(1)很多时候我们使用一个软件调试工具时,里面都约定有特定的命令格式来方便使用。此时,程序一般要先对特定格式的命令进行解析(parse),再分解成组合命令来执行。假设一个单步I2C调试工具中,在命令行中输入可用命令,有如下约定:
>>command for START:
start
s
[
>>command for STOP:
stop
st
]
>>command for WRITE:
write data
w data
> data
>>command for READ:
read
r
<
那么,解析命令行中的字符串就显得比较关键。如下函数cmdParser就是解析字符串函数。
void cmdParser(char *cmdLine)
{
char cmd[100];
int data = 0;
if(strlen(cmdLine)<=0){showMSG("/n/r");return ;} //如果命令为空
sscanf(cmdLine,"%s %x",cmd,&data); //将字符串解析成命令和数据。比如写命令+写数据
strcpy(cmd,::strlwr(cmd)); //转小写
if(strcmp(cmd,"start")==0||strcmp(cmd,"[")==0||strcmp(cmd,"s")==0)
{
IICStart();
showMSG("IIC Bus start"); //显示工作状态
clearCMD(); //清除命令输入框内容,一般设置""即可
}
else if(strcmp(cmd,"stop")==0||strcmp(cmd,"]")==0||strcmp(cmd,"st")==0)
{
IICStop();
showMSG("IIC Bus stop");
clearCMD();
}
else if(strcmp(cmd,"write")==0||strcmp(cmd,"w")==0||strcmp(cmd,">")==0)
{
if(IICWriteByte(data)) //写data
{
sprintf(cmd,"IIC write 0x%x",data);
showMSG(cmd);
}
else
{
sprintf(cmd,"err: write 0x%x err",data);
showMSG(cmd);
}
clearCMD();
}
else if(strcmp(cmd,"read")==0||strcmp(cmd,"r")==0||strcmp(cmd,"<")==0)
{
data = IICReadByte();
sprintf(cmd,"IIC read 0x%x",data);
showMSG(cmd);
clearCMD();
}
else if(strcmp(cmd,"ack")==0||strcmp(cmd,"a")==0)
{
IICSendAck(1);
showMSG("Send ACK");
clearCMD();
}
else if(strcmp(cmd,"noack")==0||strcmp(cmd,"na")==0)
{
IICSendAck(0);
showMSG("Send NO ACK");
clearCMD();
}
else
{
showMSG("err: unknown command");
clearCMD();
}
}
(2)利用基础之三的IIC的基础语句,组合成特定芯片的控制处理函数
void IICWriteSN3199OneCommand(BYTE subaddr,BYTE data)
{
IICStart();
IICWriteByte(SN3199_IIC_WRITE_ADDRESS);
IICWriteByte(subaddr);
IICWriteByte(data);
IICStop();
}
- 并口定义及其编程基础之四:IIC调试工具的命令解析及使用
- 并口定义及并口编程基础
- 并口定义及并口编程基础
- 并口定义及其编程基础之一:并口说明
- 并口定义及其编程基础之一:并口说明
- 并口编程 并口定义
- OPENWRT入门之四------openwrt命令行模式命令及其工具
- 并发编程工具之四:Exchanger 使用
- 串口 并口线的定义
- 电脑的并口针脚定义
- makefile的命令包定义及使用
- 1.2编程基础之变量定义、赋值及转换
- Linux下的并口编程
- Linux下的并口编程
- gdb调试命令的使用及总结
- gdb调试命令的使用及总结
- gdb调试命令的使用及总结
- gdb调试命令的使用及总结
- Ubuntu系统安装stardict(星际译王)词典
- Amazon SQS 技术资料汇总
- C#通過相對路徑調用C++的dll
- 禁止复制手机号 分享网页
- qt no such file or directory 编译
- 并口定义及其编程基础之四:IIC调试工具的命令解析及使用
- 使用表达式树动态构建Linq查询条件来实现单个实体动态查询
- HttpClient浅尝-小试牛刀
- MySQL攻击部分代码
- 利用ArcGIS开发地理信息系统入门
- 用 awk命令 来保存记录CPU占有率
- IMF总裁之争白热化 法财长、墨央行行长忙拉票
- 内存整理的原理是什么?
- AndroidGUI21:ImageSwitcher常用技巧