周立功源代码解释

chiandmiao 2011-05-25 09:10:46
uint8 ModemCommand(char *Command)
{
uint8 i,err;
uint16 j;
OSSemPend(ModemSem, 0, &err);
GetAllChar();
if (ModemState == MODEM_CLOSE)
{
while(1)
{
while ((U1LSR & 0x00000001) != 0)
{
err = U1RBR;
}
ModemWrite("AT\r\n", 4);
i = ModemGetch();
j = 0;
while ( j <= 20 )
{
err = i;
i = ModemGetch();
if (err == 'O' || err == 'o')
if (i == 'K' || i == 'k')
{
i = ModemGetch();
i = ModemGetch();
break;
}
if( (i == 0) && (j == 3) )
{
j=20;
}
j++;
}
if(j >=20 )
{
continue;
}
else
break;
}

ModemWrite(Command, strlen(Command));
ModemWrite("\r\n", 2);
i = ModemGetch();
j=0;
while (1)
{
err = i;
i = ModemGetch();
if (err == 'O' || err == 'o')
if (i == 'K' || i == 'k')
{
i = ModemGetch();
i = ModemGetch();
break;
}
if(i == 0)
j++;
if(j >= 3 )
break;

}
GetAllChar();

}
OSSemPost(ModemSem);
return ModemState;
}
这段代码具体是什么意思,能不能每行注释一下,还有 ModemWrite的几个函数的解释,ModemWrite("AT\r\n", 4); ModemWrite("\r\n", 2); ModemWrite("ATD", 3);
...全文
195 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱Coding 2011-06-07
  • 打赏
  • 举报
回复
mark后走人
九个太阳2023 2011-06-06
  • 打赏
  • 举报
回复
LZ这样问问题,估计得不到最好的答案·
ChenwuJerry 2011-06-06
  • 打赏
  • 举报
回复
用心无力啊!力不从心!加油!
wangqinglongd 2011-06-04
  • 打赏
  • 举报
回复
我是初学者,看来帮不上忙啊
cecwxf 2011-06-03
  • 打赏
  • 举报
回复
楼主自己耐下心来慢慢看就懂了,,论坛里面的人都比较忙,你不懂的地方可以问,这样也才能进步。
ywmen 2011-06-01
  • 打赏
  • 举报
回复
什么玩意,发一段代码上来就求解释。。。
cuixingfei 2011-06-01
  • 打赏
  • 举报
回复
路过,打酱油。。。。。
学飞的笨鸟 2011-06-01
  • 打赏
  • 举报
回复
1.关于程序注释问题,楼主最好咨询下身边人或自己下功夫琢磨下。
2.关于“AT”,"ATD"等AT指令集可参考http://baike.baidu.com/view/2420376.htm。
chiandmiao 2011-05-25
  • 打赏
  • 举报
回复
const char GPRS_RCVMSG_STR[]={"AT+CMGR=%d\r\n"};
uint8 GPRSReadMSG(uint8 num,char * number,char * MSG )
{
char sendchar[15];
char i,j;
uint8 err;

GetAllChar();
ModemCommand("AT+CMGF=1");

OSSemPend(ModemSem, 0, &err);
_sprintf(sendchar,GPRS_RCVMSG_STR,num);
ModemWrite(sendchar,strlen(sendchar));
i = ModemGetch();
j = 0;
while ( j <= 5 )
{
if (i == 0x2c)
{
break;
}
i = ModemGetch();
if(i == 0)
j++;
}
if( j >=5 )
{
OSSemPost(ModemSem);
return 1;
}
i = ModemGetch();
i=0;
do //保存号码
{
number[i] = ModemGetch();
i++;
}while(number[i-1] != 0x22);
number[i-1] = 0;

err = 0;
i = ModemGetch();
while ( err <= 5 ) //查看信息
{
j = i;
i = ModemGetch();
if (j == 0x0d)
if (i == 0x0a)
{
break;
}
if(i == 0)
err++;
}

j = 0;
err = 0;
MSG[0] = ModemGetch();
MSG[0] = ModemGetch();
while ( err <= 5) //保存信息
{
MSG[j+1] = ModemGetch();

if ( (MSG[j] == 0x4f) || (MSG[j] == 0x6f) )
if ( (MSG[j+1] == 0x4b) || (MSG[j+1] == 0x6b) )
{
i = ModemGetch();
i = ModemGetch();
break;
}
if(MSG[j+1] == 0)
err++;
else
j++;
}
if( j > 0 )
{
for(i = 0; i < j ; i++ )
{
if(MSG[i] == 0x0d )
if(MSG[i+1] == 0x0a )
if((MSG[i+2] == 0x4f) || (MSG[i+2] == 0x6f) )
if((MSG[i+3] == 0x4b) || (MSG[i+3] == 0x6b) )
{
MSG[i] = 0;
break;
}
}
OSSemPost(ModemSem);
return 0;
}
OSSemPost(ModemSem);
return 1;
}
求注释
chiandmiao 2011-05-25
  • 打赏
  • 举报
回复
希望答复能够越快越好
当我遇上-你 2011-05-25
  • 打赏
  • 举报
回复
这...空了来看看
mz_zhang 2011-05-25
  • 打赏
  • 举报
回复
1 你发的这个代码 只能猜 因为连你的ModemWrite函数怎么定义的都不知道。但是可以猜到 这个函数功能是向 猫发一个 内容为第一个参数“” 长度为 第二个参数“” 的字符串
2 猜到 你做at指令相关的东西。
3 err = i;
i = ModemGetch();
if (err == 'O' || err == 'o')
if (i == 'K' || i == 'k')
{
i = ModemGetch();
i = ModemGetch();
break;
} 收到 “ok”的回复
91program 2011-05-25
  • 打赏
  • 举报
回复
对这种问题,没啥兴趣

都不知道啥功能

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧