周立功提供的BENQ M20的驱动程序中的读短信函数的三个参数我搞不懂
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();//for " i=0; do//save number { number = ModemGetch(); i++; }while(number[i-1] != 0x22); number[i-1] = 0; err = 0; i = ModemGetch(); while ( err <= 5 )//find the MSG { 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 )//Save the MSG { MSG[j+1] = ModemGetch(); //if ( (i == 'O') || (i == 'o') ) //if ( (MSG[j] == 'K') || (MSG[j] == 'k') ) 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 == 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 = 0; break; } } OSSemPost(ModemSem); return 0; } OSSemPost(ModemSem); return 1; } 这是整个函数,哪位高手能帮我解决一下. |