通过gprs发短信的程序,重点在设置串口属性,比如硬件流控,等等。strcat(gsmMessage, "\x1a"); 这一句结束短信内容。串口设置的有关语句如下:
newtio.c_cflag |= CLOCAL | CREAD | CRTSCTS;
newtio.c_iflag = IGNPAR;QePLinux联盟
newtio.c_oflag = 0;QePLinux联盟
newtio.c_lflag = 0; ////non ICANON
newtio.c_cc[VINTR] = 0; /* Ctrl-c */ QePLinux联盟
newtio.c_cc[VQUIT] = 0; /* Ctrl-\ */QePLinux联盟
newtio.c_cc[VERASE] = 0; /* del */QePLinux联盟
newtio.c_cc[VKILL] = 0; /* @ */QePLinux联盟
newtio.c_cc[VEOF] = 4; /* Ctrl-d */QePLinux联盟
newtio.c_cc[VTIME] = 5; /* inter-character timer, timeout VTIME*0.1 */QePLinux联盟
newtio.c_cc[VMIN] = 0; /* blocking read until VMIN character arrives */QePLinux联盟
newtio.c_cc[VSWTC] = 0; /* '\0' */QePLinux联盟
newtio.c_cc[VSTART] = 0; /* Ctrl-q */ QePLinux联盟
newtio.c_cc[VSTOP] = 0; /* Ctrl-s */QePLinux联盟
newtio.c_cc[VSUSP] = 0; /* Ctrl-z */QePLinux联盟
newtio.c_cc[VEOL] = 0; /* '\0' */QePLinux联盟
newtio.c_cc[VREPRINT] = 0; /* Ctrl-r */QePLinux联盟
newtio.c_cc[VDISCARD] = 0; /* Ctrl-u */QePLinux联盟
newtio.c_cc[VWERASE] = 0; /* Ctrl-w */QePLinux联盟
newtio.c_cc[VLNEXT] = 0; /* Ctrl-v */QePLinux联盟
newtio.c_cc[VEOL2] = 0; /* '\0' */
int main(void)QePLinux联盟
{QePLinux联盟
int fd;QePLinux联盟
int nread,nwrite,i;QePLinux联盟
char buff[32];QePLinux联盟
char reply[128];QePLinux联盟
char gsmMessage[20] = "Hello!";QePLinux联盟
QePLinux联盟
if((fd=open_port(fd,2))<0){QePLinux联盟
perror("open_port error");QePLinux联盟
return -1;QePLinux联盟
}QePLinux联盟
if((i=set_opt(fd,115200,8,'N',1))<0){QePLinux联盟
perror("set_opt error");QePLinux联盟
return -1;QePLinux联盟
}QePLinux联盟
printf("fd=%d\n",fd);QePLinux联盟
memset(buff,0,sizeof(buff));QePLinux联盟
buff[0] = 'A'; QePLinux联盟
buff[1] = 'T'; QePLinux联盟
buff[2] = '\r'; QePLinux联盟
nwrite = write(fd,buff,3);QePLinux联盟
printf("nwrite=%d,%s\n",nwrite,buff);QePLinux联盟
memset(reply,0,sizeof(reply));QePLinux联盟
nread = read(fd,reply,sizeof(reply));QePLinux联盟
printf("nread=%d,%s\n",nread,reply);QePLinux联盟
memset(buff,0,sizeof(buff));QePLinux联盟
strcpy(buff,"AT+CMGF=1");QePLinux联盟
strcat(buff,"\r");QePLinux联盟
nwrite = write(fd,buff,10);QePLinux联盟
printf("nwrite=%d,%s\n",nwrite,buff);QePLinux联盟
memset(reply,0,sizeof(reply));QePLinux联盟
nread = read(fd,reply,sizeof(reply));QePLinux联盟
printf("nread=%d,%s\n",nread,reply);QePLinux联盟
memset(buff,0,sizeof(buff));QePLinux联盟
strcpy(buff,"AT+CMGS=");QePLinux联盟
strcat(buff,"136");QePLinux联盟
strcat(buff,"\r");QePLinux联盟
nwrite = write(fd,buff,strlen(buff));QePLinux联盟
printf("nwrite=%d,%s\n",nwrite,buff);QePLinux联盟
memset(reply,0,sizeof(reply));QePLinux联盟
nread = read(fd,reply,sizeof(reply));QePLinux联盟
printf("nread=%d,%s\n",nread,reply);QePLinux联盟
strcat(gsmMessage, "\x1a"); QePLinux联盟
nwrite = write(fd,gsmMessage,7);QePLinux联盟
printf("nwrite=%d,%s\n",nwrite,gsmMessage);QePLinux联盟
memset(reply,0,sizeof(reply));QePLinux联盟
nread = read(fd,reply,sizeof(reply));QePLinux联盟
printf("nread=%d,%s\n",nread,reply);QePLinux联盟
close(fd);QePLinux联盟
return 0;QePLinux联盟
} QePLinux联盟