- 论坛徽章:
- 5
|
- int sms_send (unsigned char *sms_des,unsigned char *sms_content)
- {
- int ret=0;
- int i;
- char send_buf[BUFFER_SIZE],recv_buf[BUFFER_SIZE],content_buf[BUFFER_SIZE];
- char *des_head="AT+CMGS=";
- char *des_tail="\r\0";
- char content_tail[2]={0x1a,0x0};
- memcpy (send_buf, des_head, strlen(des_head));
- memcpy (send_buf+strlen(des_head), sms_des, strlen(sms_des));
- memcpy (send_buf+strlen(des_head)+strlen(sms_des),des_tail,strlen(des_tail)+1);
- memcpy (content_buf,sms_content,strlen(sms_content));
- memcpy (content_buf+strlen(sms_content),content_tail,strlen(content_tail)+1);
- for (i=0;i<RETRY;i++)
- {
- usleep(5000);
- while (serial_busy) usleep(1);
- serial_busy=1;
- ret=serial_send_recv(send_buf,strlen(send_buf),content_buf,strlen(content_buf),recv_buf,20,0,5,0);
- serial_busy=0;
- if (ret<0)
- {
- printf("AT+CMGS:SERIAL SEND AND RECEIVE ERROR!\n");
- return SMSSEND_ERR;
- }
- else
- {
- if (check_OK(recv_buf,ret)==0)
- return 0;
- }
- }
- return SMSSEND_ERR;
- }
- int serial_send_recv(char *send_buf,int send_len,char *send_content,int content_len,char *recv_buf,int timeout_s,int timeout_us,int wait_s,int wait_us)
- {
- int fd;
- int nread=0;
- int nwrite=0;
- char buff[BUFSIZE];
- struct termios oldtio,newtio;
- struct timeval tv;
- char *dev ="/dev/tts/0";
- fd_set rfds;
- if ( (fd = open(dev,O_RDWR | O_NOCTTY ))<0)
- {
- printf("Can't Open Serial Port!\n");
- return -1;
- }
- tcgetattr(fd,&oldtio);
- setTermios(&newtio,B115200); tcflush(fd, TCIFLUSH);
- tcsetattr(fd,TCSANOW,&newtio);
- tv.tv_sec=timeout_s;
- tv.tv_usec=timeout_us;
- nwrite=write(fd, send_buf, send_len);
- if(nwrite<send_len)
- {
- printf("Serial Write error!\n");
- return -1;
- }
- FD_ZERO(&rfds);
- FD_SET(fd,&rfds);
- if (select(1+fd,&rfds,NULL,NULL,&tv)>0)
- {
- if(FD_ISSET(fd,&rfds))
- {
- sleep(1);
- usleep(wait_us);
- nread=read(fd, buff, BUFSIZE);
- if(nread<0)
- {
- printf("serial read error!\n");
- return -1;
- }
- memcpy(recv_buf,buff,nread);
- }
- }
- #ifdef DEBUG
- buff[nread]='\0';
- printf("RECEIVED::%s\n",buff);
- #endif
- sleep(1);
- tv.tv_sec=timeout_s;
- tv.tv_usec=timeout_us;
- nwrite=write(fd, send_content, content_len);
- if(nwrite<content_len)
- {
- printf("Serial Write error!\n");
- return -1;
- }
- FD_ZERO(&rfds);
- FD_SET(fd,&rfds);
- if (select(1+fd,&rfds,NULL,NULL,&tv)>0)
- {
- if(FD_ISSET(fd,&rfds))
- {
- sleep(wait_s);
- usleep(wait_us);
- nread=read(fd, buff, BUFSIZE);
- if(nread<0)
- {
- printf("serial read error!\n");
- return -1;
- }
- memcpy(recv_buf,buff,nread);
- }
- }
- #ifdef DEBUG
- buff[nread]='\0';
- printf("RECEIVED::%s\n",buff);
- #endif
- tcsetattr(fd,TCSANOW,&oldtio);
- close(fd);
- return nread;
- }
复制代码
这个是我们以前做的时候用的
估计你的也是Wavecom的 |
|