准备:移植好pppd软件工具(可见下面的参考文章)、ppp拨号脚本、能上网的SIM卡、使能复位好EC20模块、串口初始化、读写的接口(因为CPU的USB接口给占用了,因此这里使用串口与模块通信)
识别、适应运营商原理:每个运营商的SIM卡会有相应规则的IMSI号码。通过AT指令(AT+CIMI)和EC20模块通信,读取SIM卡的IMSI号,然后判断CIMI号是哪个运营商的SIM卡,最后根据运营商的拨号码传递给拨号脚本进行拨号。
判断运营商的接口:根据获取到的IMSI判断运营商
static int get_IMSI(char *IMSI)
{
char s2[128]="AT+CIMI\r\n";
char s1[1024]={
0};
tcflush(ec20_fd,TCIOFLUSH);
UART0_Send(ec20_fd, s2,strlen(s2));
usleep(500000);
int count=UART0_Recv(ec20_fd,5,0,s1,1024);
int i=0;
#if 0
printf("count=%d\n",count);
while(count-->0)
{
printf("%c",s1[i++]);
}
printf("\n");
#endif
char *p=s1;
while(*p++)
{
// printf("%c ",*p);
if(*p>='0'&&*p<='9')
{
memcpy(IMSI,p,15);
break;
}
}
//printf("IMSI:%s\n",IMSI);
if(IMSI