周立功提供的BENQ M20的驱动程序中的读短信函数的三个参数我搞不懂<br /><br /><br /><br />const char GPRS_RCVMSG_STR[]={"AT+CMGR=%d\r\n"};<br />uint8 GPRSReadMSG(uint8 num,char * number,char * MSG )<br />{ <br /> char sendchar[15];<br /> char i,j;<br /> uint8 err;<br /> <br /> GetAllChar();<br /> ModemCommand("AT+CMGF=1");<br /> <br /> OSSemPend(ModemSem, 0, &err);<br /> _sprintf(sendchar,GPRS_RCVMSG_STR,num);<br /> ModemWrite(sendchar,strlen(sendchar));<br /> i = ModemGetch();<br /> j = 0;<br /> while ( j <= 5 )<br /> {<br /> if (i == 0x2c)<br /> {<br /> break;<br /> }<br /> i = ModemGetch();<br /> if(i == 0)<br /> j++;<br /> }<br /> if( j >=5 )<br /> {<br /> OSSemPost(ModemSem);<br /> return 1;<br /> }<br /> i = ModemGetch();//for "<br /> i=0;<br /> do//save number<br /> {<br /> number = ModemGetch();<br /> i++;<br /> }while(number[i-1] != 0x22);<br /> number[i-1] = 0;<br /> <br /> err = 0;<br /> i = ModemGetch();<br /> while ( err <= 5 )//find the MSG<br /> {<br /> j = i;<br /> i = ModemGetch();<br /> if (j == 0x0d)<br /> if (i == 0x0a)<br /> {<br /> break;<br /> }<br /> if(i == 0)<br /> err++;<br /> }<br /> <br /> j = 0;<br /> err = 0;<br /> MSG[0] = ModemGetch();<br /> MSG[0] = ModemGetch();<br /> while ( err <= 5 )//Save the MSG<br /> {<br /> MSG[j+1] = ModemGetch();<br /> //if ( (i == 'O') || (i == 'o') )<br /> //if ( (MSG[j] == 'K') || (MSG[j] == 'k') )<br /> if ( (MSG[j] == 0x4f) || (MSG[j] == 0x6f) )<br /> if ( (MSG[j+1] == 0x4b) || (MSG[j+1] == 0x6b) )<br /> {<br /> i = ModemGetch();<br /> i = ModemGetch();<br /> break;<br /> }<br /> if(MSG[j+1] == 0)<br /> err++;<br /> else<br /> j++;<br /> }<br /> if( j > 0 )<br /> {<br /> for(i = 0; i < j ; i++ )<br /> {<br /> if(MSG == 0x0d )<br /> if(MSG[i+1] == 0x0a )<br /> if((MSG[i+2] == 0x4f) || (MSG[i+2] == 0x6f) )<br /> if((MSG[i+3] == 0x4b) || (MSG[i+3] == 0x6b) )<br /> {<br /> MSG = 0;<br /> break;<br /> }<br /> }<br /> OSSemPost(ModemSem);<br /> return 0;<br /> }<br /> OSSemPost(ModemSem);<br /> return 1;<br />}<br />这是整个函数,哪位高手能帮我解决一下. |
|